Example #1
0
 def test_tilecoord(self):
     self.assertEqual(self.ftg.tilecoord(1, 428000, 336000),
                      TileCoord(1, 4, 7))
     self.assertEqual(self.ftg.tilecoord(1, 430000, 334000),
                      TileCoord(1, 5, 8))
     self.assertEqual(self.ftg.tilecoord(1, 432000, 332000),
                      TileCoord(1, 6, 9))
Example #2
0
 def test_get(self):
     image = Image.new('RGBA', (8, 8))
     image.paste((255, 0, 0, 0), (0, 0, 4, 4))
     image.paste((0, 255, 0, 0), (0, 4, 4, 8))
     image.paste((0, 0, 255, 0), (4, 0, 8, 4))
     image.paste((0, 0, 0, 255), (4, 4, 8, 8))
     string_io = StringIO()
     image.save(string_io, 'PNG')
     tile = Tile(TileCoord(1, 0, 0, 2), data=string_io.getvalue())
     tiles = list(self.mtsts.get([tile]))
     self.assertEqual(len(tiles), 4)
     self.assertEqual(tiles[0].tilecoord, TileCoord(1, 0, 0))
     image = Image.open(StringIO(tiles[0].data))
     self.assertEqual(image.size, (2, 2))
     self.assertEqual(image.getcolors(), [(4, (255, 0, 0, 0))])
     self.assertEqual(tiles[1].tilecoord, TileCoord(1, 0, 1))
     image = Image.open(StringIO(tiles[1].data))
     self.assertEqual(image.size, (2, 2))
     self.assertEqual(image.getcolors(), [(4, (0, 255, 0, 0))])
     self.assertEqual(tiles[2].tilecoord, TileCoord(1, 1, 0))
     image = Image.open(StringIO(tiles[2].data))
     self.assertEqual(image.size, (2, 2))
     self.assertEqual(image.getcolors(), [(4, (0, 0, 255, 0))])
     self.assertEqual(tiles[3].tilecoord, TileCoord(1, 1, 1))
     image = Image.open(StringIO(tiles[3].data))
     self.assertEqual(image.size, (2, 2))
     self.assertEqual(image.getcolors(), [(4, (0, 0, 0, 255))])
Example #3
0
 def test_children_root(self):
     self.assertEqual(sorted(self.qtg.children(TileCoord(0, 0, 0))), [
         TileCoord(1, 0, 0),
         TileCoord(1, 0, 1),
         TileCoord(1, 1, 0),
         TileCoord(1, 1, 1)
     ])
Example #4
0
 def test_children(self):
     self.assertEqual(sorted(self.qtg.children(TileCoord(1, 2, 3))), [
         TileCoord(2, 4, 6),
         TileCoord(2, 4, 7),
         TileCoord(2, 5, 6),
         TileCoord(2, 5, 7)
     ])
Example #5
0
 def test_iter(self):
     tilecoords = iter(TileCoord(3, 4, 6, 2))
     self.assertEqual(TileCoord(3, 4, 6), next(tilecoords))
     self.assertEqual(TileCoord(3, 4, 7), next(tilecoords))
     self.assertEqual(TileCoord(3, 5, 6), next(tilecoords))
     self.assertEqual(TileCoord(3, 5, 7), next(tilecoords))
     self.assertRaises(StopIteration, next, tilecoords)
Example #6
0
 def test_filename(self):
     self.assertEqual(self.rest.filename(TileCoord(1, 2, 3)),
                      'test/1.0.0/layer/default/2011/swissgrid/1/3/2.png')
     self.assertEqual(
         self.kvp.filename(TileCoord(1, 2, 3)),
         'test?Service=WMTS&Request=GetTile&Format=.png&Version=1.0.0&Layer=layer&Style=default&DATE=2011&TileMatrixSet=swissgrid&TileMatrix=1&TileRow=3&TileCol=2'
     )
Example #7
0
 def test_init_boundingpyramid(self):
     ts = TileStore(
         bounding_pyramid=BoundingPyramid.from_string('1/0/0:1/1'))
     self.assertTrue(Tile(TileCoord(1, 0, 0)) in ts)
     tiles = list(ts.list())
     self.assertEqual(len(tiles), 1)
     self.assertEqual(tiles[0].tilecoord, TileCoord(1, 0, 0))
Example #8
0
 def test_filename_without_url(self):
     # s3 url it shouldn't starts with a /
     self.assertEqual(self.rest_nourl.filename(TileCoord(1, 2, 3)),
                      '1.0.0/layer/default/2011/swissgrid/1/3/2.png')
     self.assertEqual(
         self.kvp_nourl.filename(TileCoord(1, 2, 3)),
         '?Service=WMTS&Request=GetTile&Format=.png&Version=1.0.0&Layer=layer&Style=default&DATE=2011&TileMatrixSet=swissgrid&TileMatrix=1&TileRow=3&TileCol=2'
     )
Example #9
0
 def test_extent_z1(self):
     self.assertEqual(self.qtg.extent(TileCoord(1, 0, 0)),
                      (0.0, 2.0, 1.0, 3.0))
     self.assertEqual(self.qtg.extent(TileCoord(1, 0, 1)),
                      (0.0, 1.0, 1.0, 2.0))
     self.assertEqual(self.qtg.extent(TileCoord(1, 1, 0)),
                      (1.0, 2.0, 2.0, 3.0))
     self.assertEqual(self.qtg.extent(TileCoord(1, 1, 1)),
                      (1.0, 1.0, 2.0, 2.0))
Example #10
0
 def test_extent_z2(self):
     self.assertEqual(self.qtg.extent(TileCoord(2, 0, 0)),
                      (0.0, 2.5, 0.5, 3.0))
     self.assertEqual(self.qtg.extent(TileCoord(2, 1, 1)),
                      (0.5, 2.0, 1.0, 2.5))
     self.assertEqual(self.qtg.extent(TileCoord(2, 2, 2)),
                      (1.0, 1.5, 1.5, 2.0))
     self.assertEqual(self.qtg.extent(TileCoord(2, 3, 3)),
                      (1.5, 1.0, 2.0, 1.5))
Example #11
0
 def children(self, tilecoord):
     if self.max_zoom is None or tilecoord.z < self.max_zoom:
         yield TileCoord(tilecoord.z + 1, 2 * tilecoord.x, 2 * tilecoord.y)
         yield TileCoord(tilecoord.z + 1, 2 * tilecoord.x + 1,
                         2 * tilecoord.y)
         yield TileCoord(tilecoord.z + 1, 2 * tilecoord.x,
                         2 * tilecoord.y + 1)
         yield TileCoord(tilecoord.z + 1, 2 * tilecoord.x + 1,
                         2 * tilecoord.y + 1)
Example #12
0
 def test_itertopdown(self):
     bp = BoundingPyramid()
     bp.add(TileCoord(2, 1, 3))
     bp.fill_up(0)
     self.assertEqual(
         list(bp.itertopdown()),
         [TileCoord(0, 0, 0),
          TileCoord(1, 0, 1),
          TileCoord(2, 1, 3)])
Example #13
0
 def test_metatilecoords(self):
     bp = BoundingPyramid.full(1, 2)
     metatilecoords = bp.metatilecoords(2)
     self.assertEqual(TileCoord(1, 0, 0, 2), next(metatilecoords))
     self.assertEqual(TileCoord(2, 0, 0, 2), next(metatilecoords))
     self.assertEqual(TileCoord(2, 0, 2, 2), next(metatilecoords))
     self.assertEqual(TileCoord(2, 2, 0, 2), next(metatilecoords))
     self.assertEqual(TileCoord(2, 2, 2, 2), next(metatilecoords))
     self.assertRaises(StopIteration, next, metatilecoords)
Example #14
0
 def test_metadata(self):
     tilestore = MBTilesTileStore(sqlite3.connect(':memory:'))
     tilestore.put_one(Tile(TileCoord(1, 0, 0)))
     tilestore.put_one(Tile(TileCoord(2, 0, 0)))
     tilestore.set_metadata_zooms()
     self.assertEqual(int(tilestore.metadata['minzoom']), 1)
     self.assertEqual(int(tilestore.metadata['maxzoom']), 2)
     self.assertEqual(sorted(tilestore.metadata.itervalues()), ['1', '2'])
     self.assertEqual(sorted(tilestore.metadata.keys()),
                      ['maxzoom', 'minzoom'])
Example #15
0
    def test_extent_border(self):
        self.assertEqual(self.ftg.extent(TileCoord(0, 0, 0), 50),
                         (419999.5, 349998.5, 420001.5, 350000.5))
        self.assertEqual(self.ftg.extent(TileCoord(1, 0, 0), 100),
                         (419999.5, 349999, 420001, 350000.5))

        self.assertEqual(self.ftg2.extent(TileCoord(0, 0, 0), 50),
                         (419990.0, 349938.8, 420061.2, 350010))
        self.assertEqual(self.ftg2.extent(TileCoord(1, 0, 0), 50),
                         (419995, 349969.4, 420030.6, 350005))
Example #16
0
    def test_extent(self):
        self.assertEqual(self.ftg.extent(TileCoord(0, 0, 0)),
                         (420000, 349999, 420001, 350000))
        self.assertEqual(self.ftg.extent(TileCoord(1, 0, 0)),
                         (420000, 349999.5, 420000.5, 350000))

        self.assertEqual(self.ftg2.extent(TileCoord(0, 0, 0)),
                         (420000, 349948.8, 420051.2, 350000))
        self.assertEqual(self.ftg2.extent(TileCoord(1, 0, 0)),
                         (420000, 349974.4, 420025.6, 350000))
Example #17
0
 def list(self):
     for x in xrange(0, self.width):
         for y in xrange(0, self.height):
             if self.pixels[x, y]:
                 yield Tile(
                     TileCoord(self.z, self.xbounds.start + x,
                               self.ybounds.stop - y - 1))
Example #18
0
 def test_png(self):
     layout = WMSTileLayout(url='http://example.com/folder',
                            layers='l1,l2',
                            srs='EPSG:1000',
                            format='image/png',
                            tilegrid=self.tilegrid)
     result = urlparse(layout.filename(TileCoord(0, 0, 0)))
     self.assertEqual(result.netloc, 'example.com')
     self.assertEqual(result.path, '/folder')
     query = parse_qs(result.query)
     self.assertEqual(query['LAYERS'], ['l1,l2'])
     self.assertEqual(query['FORMAT'], ['image/png'])
     self.assertEqual(query['TRANSPARENT'], ['TRUE'])
     self.assertEqual(query['SERVICE'], ['WMS'])
     self.assertEqual(query['VERSION'], ['1.1.1'])
     self.assertEqual(query['REQUEST'], ['GetMap'])
     self.assertEqual(query['SRS'], ['EPSG:1000'])
     self.assertEqual(query['WIDTH'], ['100'])
     self.assertEqual(query['HEIGHT'], ['100'])
     bbox = [float(i) for i in query['BBOX'][0].split(',')]
     self.assertEqual(len(bbox), 4)
     self.assertEqual(bbox[0], 420000.0)
     self.assertEqual(bbox[1], 340000.0)
     self.assertEqual(bbox[2], 430000.0)
     self.assertEqual(bbox[3], 350000.0)
Example #19
0
 def test_extent(self):
     for z in xrange(0, 4):
         for x in xrange(0, 1 << z):
             for y in xrange(0, 1 << z):
                 tilecoord = TileCoord(z, x, y)
                 self.assertEqual(self.ftg.extent(tilecoord),
                                  self.qtg.extent(tilecoord))
Example #20
0
 def test_flip_y(self):
     self.assertEqual(self.qtsn.extent(TileCoord(2, 0, 0)),
                      self.qtsf.extent(TileCoord(2, 0, 3)))
     self.assertEqual(self.qtsn.extent(TileCoord(2, 1, 1)),
                      self.qtsf.extent(TileCoord(2, 1, 2)))
     self.assertEqual(self.qtsn.extent(TileCoord(2, 2, 2)),
                      self.qtsf.extent(TileCoord(2, 2, 1)))
     self.assertEqual(self.qtsn.extent(TileCoord(2, 3, 3)),
                      self.qtsf.extent(TileCoord(2, 3, 0)))
Example #21
0
 def tilecoord(self, z, x, y):
     tilecoord_x = int((x - self.max_extent[0]) * (1 << z) /
                       (self.max_extent[2] - self.max_extent[0]))
     tilecoord_y = int((y - self.max_extent[1]) * (1 << z) /
                       (self.max_extent[3] - self.max_extent[1]))
     if not self.flip_y:
         tilecoord_y = (1 << z) - tilecoord_y - 1
     return TileCoord(z, tilecoord_x, tilecoord_y)
Example #22
0
File: sqs.py Project: sw897/tilebox
 def popleft(self):
     sqs_message = self.queue.read(self.visibility_timeout)
     if sqs_message is None:
         return self.on_empty()
     z = sqs_message.get('z')
     x = sqs_message.get('x')
     y = sqs_message.get('y')
     return Tile(TileCoord(z, x, y), sqs_message=sqs_message)
Example #23
0
 def test(self):
     tilestore = NullTileStore()
     tile = Tile(TileCoord(0, 0, 0))
     self.assertFalse(tile in tilestore)
     self.assertEqual(list(tilestore.delete([tile])), [tile])
     self.assertEqual(list(tilestore.list()), [])
     self.assertEqual(list(tilestore.get([tile])), [tile])
     self.assertEqual(list(tilestore.put([tile])), [tile])
Example #24
0
 def test_tilecoord(self):
     for z in xrange(0, 4):
         for x in xrange(0, 1 << z):
             for y in xrange(0, 1 << z):
                 tilecoord = TileCoord(z, x, y)
                 minx, miny, maxx, maxy = self.qtg.extent(tilecoord)
                 self.assertEqual(self.qtg.tilecoord(z, minx, miny),
                                  tilecoord)
Example #25
0
 def test_empty(self):
     ts = TileStore()
     self.assertEqual(ts.bounding_pyramid, None)
     self.assertEqual(ts.content_type, None)
     self.assertEqual(len(ts), 0)
     self.assertRaises(NotImplementedError, next,
                       ts.delete((Tile(TileCoord(0, 0, 0)), )))
     self.assertRaises(NotImplementedError, ts.delete_one, None)
     self.assertEqual(ts.get_cheap_bounding_pyramid(), None)
     self.assertRaises(NotImplementedError, next,
                       ts.get((Tile(TileCoord(0, 0, 0)), )))
     self.assertEqual(list(ts.get_all()), [])
     self.assertRaises(NotImplementedError, ts.get_one, None)
     self.assertEqual(list(ts.list()), [])
     self.assertRaises(NotImplementedError, next,
                       ts.put((Tile(TileCoord(0, 0, 0)), )))
     self.assertRaises(NotImplementedError, ts.put_one, None)
     self.assertFalse(None in ts)
     self.assertEqual(ts.get_bounding_pyramid(), BoundingPyramid())
Example #26
0
 def test_add(self):
     bp = BoundingPyramid()
     bp.add(TileCoord(1, 0, 0))
     self.assertEqual(len(bp), 1)
     self.assertTrue(TileCoord(1, 0, 0) in bp)
     self.assertFalse(TileCoord(1, 0, 1) in bp)
     self.assertFalse(TileCoord(1, 1, 0) in bp)
     self.assertFalse(TileCoord(1, 1, 1) in bp)
     self.assertEqual(list(bp), [TileCoord(1, 0, 0)])
Example #27
0
 def test_tilecoord(self):
     self.assertEqual(self.ftg.tilecoord(1, 428000, 336000),
                      TileCoord(1, 4, 7))
     self.assertEqual(self.ftg.tilecoord(1, 428000.1, 336000.1),
                      TileCoord(1, 4, 6))
     self.assertEqual(self.ftg.tilecoord(1, 429999.9, 337999.9),
                      TileCoord(1, 4, 6))
     self.assertEqual(self.ftg.tilecoord(1, 430000, 338000),
                      TileCoord(1, 5, 6))
     self.assertEqual(self.ftg.tilecoord(1, 430000, 334000),
                      TileCoord(1, 5, 8))
     self.assertEqual(self.ftg.tilecoord(1, 431000, 335000),
                      TileCoord(1, 5, 7))
     self.assertEqual(self.ftg.tilecoord(1, 432000, 336000),
                      TileCoord(1, 6, 7))
     self.assertEqual(self.ftg.tilecoord(1, 432000, 333000),
                      TileCoord(1, 6, 8))
Example #28
0
 def test_extent(self):
     self.assertEqual(self.ftg.extent(TileCoord(0, 0, 0)),
                      (420000, 275000, 495000, 350000))
     self.assertEqual(self.ftg.extent(TileCoord(1, 0, 0)),
                      (420000, 348000, 422000, 350000))
     self.assertEqual(self.ftg.extent(TileCoord(2, 0, 0)),
                      (420000, 349000, 421000, 350000))
     self.assertEqual(self.ftg.extent(TileCoord(3, 0, 0)),
                      (420000, 349500, 420500, 350000))
     self.assertEqual(self.ftg.extent(TileCoord(1, 4, 6)),
                      (428000, 336000, 430000, 338000))
     self.assertEqual(self.ftg.extent(TileCoord(1, 5, 7)),
                      (430000, 334000, 432000, 336000))
Example #29
0
    def test_tilecoord(self):
        self.assertEqual(self.ftg.tilecoord(0, 420000.75, 349999.25),
                         TileCoord(0, 0, 0))
        self.assertEqual(self.ftg.tilecoord(1, 420000.25, 349999.75),
                         TileCoord(1, 0, 0))

        self.assertEqual(self.ftg2.tilecoord(0, 420000.01, 349999.99),
                         TileCoord(0, 0, 0))
        self.assertEqual(self.ftg2.tilecoord(0, 420010, 349990),
                         TileCoord(0, 0, 0))
        self.assertEqual(self.ftg2.tilecoord(0, 420051.19, 349948.81),
                         TileCoord(0, 0, 0))
        self.assertEqual(self.ftg2.tilecoord(0, 420051.21, 349948.79),
                         TileCoord(0, 1, 1))
Example #30
0
 def list(self):
     while True:
         try:
             sqs_message = self.queue.read()
             if sqs_message is None:
                 try:
                     self.on_empty(self.queue)
                 except StopIteration:
                     break
             else:
                 z = sqs_message.get('z')
                 x = sqs_message.get('x')
                 y = sqs_message.get('y')
                 n = sqs_message.get('n')
                 # FIXME deserialize other attributes
                 tile = Tile(TileCoord(z, x, y, n), sqs_message=sqs_message)
                 yield tile
         except SQSDecodeError as e:
             logger.warning(str(e))
             sqs_message.delete()
Example #31
0
 def test_from_string(self):
     self.assertEqual(TileCoord.from_string('1/2/3'), TileCoord(1, 2, 3))
Example #32
0
 def test_from_string_metatile(self):
     self.assertEqual(TileCoord.from_string('1/2/3:+2/+2'), TileCoord(1, 2, 3, 2))
Example #33
0
 def test_from_tuple(self):
     self.assertEqual(TileCoord.from_tuple((1, 2, 3)), TileCoord(1, 2, 3))
Example #34
0
 def get_all(self):
     for key, data in self.db.items():
         tile = Tile(TileCoord.from_string(key), content_type=self.content_type, data=data)
         yield tile
Example #35
0
 def list(self):
     return imap(lambda s: Tile(TileCoord.from_string(s)), self.db.iterkeys())