def testChunkBoundingBox(self): chunker = Chunker(200, 5) chunk_id = 3645 stripe = chunker.getStripe(chunk_id) chunk_in_stripe = chunker.getChunk(chunk_id, stripe) bbox = chunker.getChunkBoundingBox(stripe, chunk_in_stripe) sbbox = chunker.getSubChunkBoundingBox(0, 0) self.assertEqual(stripe, 9) self.assertEqual(chunk_in_stripe, 45) b = Box.fromRadians(5.048988193233824, -1.4294246573883558, 5.1611879309330035, -1.413716694110407) self.assertAlmostEqual(bbox, b) sb = Box.fromRadians(0.0, -1.5707963267948966, 6.283185307179586, -1.5676547341363067) self.assertAlmostEqual(sbbox, sb)
def test_string(self): b = Box.fromRadians(0, 0, 1, 1) self.assertEqual(str(b), 'Box([0.0, 1.0], [0.0, 1.0])') self.assertEqual( repr(b), 'Box(NormalizedAngleInterval.fromRadians(0.0, 1.0), ' 'AngleInterval.fromRadians(0.0, 1.0))' ) self.assertEqual(b, eval(repr(b), dict( AngleInterval=AngleInterval, Box=Box, NormalizedAngleInterval=NormalizedAngleInterval )))
def test_construction(self): b = Box(Box.allLongitudes(), Box.allLatitudes()) self.assertTrue(b.isFull()) b = Box.fromDegrees(-90, -45, 90, 45) self.assertEqual(b, Box(b.getLon(), b.getLat())) a = Box.fromRadians(-0.5 * math.pi, -0.25 * math.pi, 0.5 * math.pi, 0.25 * math.pi) b = Box(LonLat.fromRadians(-0.5 * math.pi, -0.25 * math.pi), LonLat.fromRadians(0.5 * math.pi, 0.25 * math.pi)) c = Box(LonLat.fromRadians(0, 0), Angle(0.5 * math.pi), Angle(0.25 * math.pi)) d = c.clone() self.assertEqual(a, b) self.assertEqual(b, c) self.assertEqual(c, d) self.assertNotEqual(id(c), id(d)) b = Box() self.assertTrue(b.isEmpty()) self.assertTrue(Box.empty().isEmpty()) self.assertTrue(Box.full().isFull())
def test_codec(self): b = Box.fromRadians(0, 0, 1, 1) s = b.encode() self.assertEqual(Box.decode(s), b) self.assertEqual(Region.decode(s), b)
def test_dilation_and_erosion(self): a = Box.fromRadians(0.5, -0.5, 1.5, 0.5) b = a.dilatedBy(Angle(0.5), Angle(0.5)).erodedBy(Angle(1), Angle(1)) a.dilateBy(Angle(0.5), Angle(0.5)).erodeBy(Angle(1), Angle(1)) self.assertEqual(a, b) self.assertEqual(a, LonLat.fromRadians(1, 0))