コード例 #1
0
    def test_tiles_count_wgs84(self):
        world = Extents(lower_left=XY(-180, -90), upper_right=XY(180, 90))

        # Resolution 0 is 2×1 for the whole world
        self.assertEqual(self.wgs84.GetTilesCount(extents=world, resolution=0),
                         XY(2, 1))

        # Resolution 1 is 4×2 for the whole world
        self.assertEqual(self.wgs84.GetTilesCount(extents=world, resolution=1),
                         XY(4, 2))
コード例 #2
0
 def test_get_tms_extents_aligned(self):
     dataset = Dataset(self.alignedfile)
     # At native resolution, should only occupy its own tile
     self.assertExtentsEqual(
         dataset.GetTmsExtents(),
         Extents(lower_left=XY(1, 1), upper_right=XY(2, 2)))
     # At resolution 1, should only occupy lower-left quadrant
     self.assertExtentsEqual(
         dataset.GetTmsExtents(resolution=1),
         Extents(lower_left=XY(0, 0), upper_right=XY(1, 1)))
コード例 #3
0
 def test_get_tms_extents(self):
     dataset = Dataset(self.inputfile)
     # The whole world goes from 0 to 3 in both dimensions
     self.assertExtentsEqual(
         dataset.GetTmsExtents(),
         Extents(lower_left=XY(0, 0), upper_right=XY(4, 4)))
     # At resolution 0, there's only one tile
     self.assertExtentsEqual(
         dataset.GetTmsExtents(resolution=0),
         Extents(lower_left=XY(0, 0), upper_right=XY(1, 1)))
コード例 #4
0
    def test_get_world_extents(self):
        # Degrees
        self.assertExtentsEqual(
            self.wgs84.GetWorldExtents(),
            Extents(lower_left=XY(-180.0, -90.0), upper_right=XY(180.0, 90.0)))

        # Meters
        mercator = SpatialReference.FromEPSG(EPSG_WEB_MERCATOR)
        self.assertExtentsEqual(
            mercator.GetWorldExtents(),
            Extents(lower_left=XY(-20037508.3428, -20037508.3428),
                    upper_right=XY(20037508.3428, 20037508.3428)))
コード例 #5
0
ファイル: test_vips.py プロジェクト: giscranks/gdal2mbtiles-1
    def test_upsample(self):
        resolution = 0
        image = VImageAdapter.new_rgba(width=TILE_SIDE * 2**resolution,
                                       height=TILE_SIDE * 2**resolution)

        tiles = TmsTiles(image=image,
                         storage=Storage(renderer=None),
                         tile_width=TILE_SIDE,
                         tile_height=TILE_SIDE,
                         offset=XY(0, 0),
                         resolution=resolution)

        # Zero levels
        self.assertRaises(AssertionError, tiles.upsample, levels=0)

        # One level
        tiles1a = tiles.upsample()
        self.assertEqual(tiles1a.image_width, TILE_SIDE * 2**(resolution + 1))
        self.assertEqual(tiles1a.image_height, TILE_SIDE * 2**(resolution + 1))
        self.assertEqual(tiles1a.resolution, resolution + 1)

        tiles1b = tiles.upsample(levels=1)
        self.assertEqual(tiles1b.image_width, TILE_SIDE * 2**(resolution + 1))
        self.assertEqual(tiles1b.image_height, TILE_SIDE * 2**(resolution + 1))
        self.assertEqual(tiles1b.resolution, resolution + 1)

        # Two levels
        tiles2 = tiles.upsample(levels=2)
        self.assertEqual(tiles2.image_width, TILE_SIDE * 2**(resolution + 2))
        self.assertEqual(tiles2.image_height, TILE_SIDE * 2**(resolution + 2))
        self.assertEqual(tiles2.resolution, resolution + 2)
コード例 #6
0
    def test_tiles_count_mercator(self):
        mercator = SpatialReference.FromEPSG(EPSG_WEB_MERCATOR)
        major_half_circumference = mercator.GetMajorCircumference() / 2
        minor_half_circumference = mercator.GetMinorCircumference() / 2
        world = Extents(lower_left=XY(-major_half_circumference,
                                      -minor_half_circumference),
                        upper_right=XY(major_half_circumference,
                                       minor_half_circumference))

        # Resolution 0 is 1×1 for the whole world
        self.assertEqual(mercator.GetTilesCount(extents=world, resolution=0),
                         XY(1, 1))

        # Resolution 1 is 2×2 for the whole world
        self.assertEqual(mercator.GetTilesCount(extents=world, resolution=1),
                         XY(2, 2))
コード例 #7
0
ファイル: test_vips.py プロジェクト: giscranks/gdal2mbtiles-1
 def test_dimensions(self):
     # Very small WGS84 map. :-)
     image = VImageAdapter.new_rgba(width=2, height=1)
     tiles = TmsTiles(image=image,
                      storage=Storage(renderer=None),
                      tile_width=1,
                      tile_height=1,
                      offset=XY(0, 0),
                      resolution=0)
     self.assertEqual(tiles.image_width, 2)
     self.assertEqual(tiles.image_height, 1)
コード例 #8
0
ファイル: test_vips.py プロジェクト: giscranks/gdal2mbtiles-1
    def test_tms_align(self):
        image = VImageAdapter.new_rgba(width=16, height=16)

        # Already aligned to integer offsets
        result = VImageAdapter(image).tms_align(tile_width=16,
                                                tile_height=16,
                                                offset=XY(1, 1))
        self.assertEqual(result.width, image.width)
        self.assertEqual(result.height, image.height)

        # Spanning by half tiles in both X and Y directions
        result = VImageAdapter(image).tms_align(tile_width=16,
                                                tile_height=16,
                                                offset=XY(1.5, 1.5))
        self.assertEqual(result.width, image.width * 2)
        self.assertEqual(result.height, image.height * 2)

        # Image is quarter tile
        result = VImageAdapter(image).tms_align(tile_width=32,
                                                tile_height=32,
                                                offset=XY(1, 1))
        self.assertEqual(result.width, image.width * 2)
        self.assertEqual(result.height, image.height * 2)
コード例 #9
0
    def test_get_world_tms_borders_aligned(self):
        # Aligned file should have borders marked as + below:
        #      3,3
        #   ++++
        #   ++++
        #   + ++
        #   ++++
        # 0,0
        dataset = Dataset(self.alignedfile)

        # At native resolution, every tile except for (1, 1)
        self.assertEqual(
            set(dataset.GetWorldTmsBorders()),
            set(
                XY(x, y) for x in range(0, 4) for y in range(0, 4)
                if (x, y) != (1, 1)))

        # At resolution 1, every tile except for (0, 0)
        self.assertEqual(
            set(dataset.GetWorldTmsBorders(resolution=1)),
            set(
                XY(x, y) for x in range(0, 2) for y in range(0, 2)
                if (x, y) != (0, 0)))
コード例 #10
0
 def test_get_tms_extents_wgs84(self):
     # Resolution 0, WGS 84 projection, there are only two tiles
     dataset = Dataset(self.wgs84file)
     self.assertExtentsEqual(
         dataset.GetTmsExtents(resolution=0),
         Extents(lower_left=XY(0, 0), upper_right=XY(2, 1)))