Beispiel #1
0
def preview(request, name):
    try:
        mbtiles = MBTiles(name)
        z, x, y = mbtiles.center_tile()
        return tile(request, name, z, x, y)
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #2
0
 def test_grid(self):
     mb = MBTiles('geography-class')
     tile = mb.grid(3, 4, 2, callback='grid')
     h = hashlib.md5(tile).hexdigest()
     self.failUnlessEqual('8d9cf7d9d0bef7cc1f0a37b49bf4cec7', h)
     p = re.compile("grid\((.+)\);")
     self.failUnless(p.match(tile))
     utfgrid = p.match(tile).group(1)
     utfgrid = edict(simplejson.loads(utfgrid))
     self.failUnlessEqual(utfgrid.grid[20:30], [
         u'       !!!!!!!!!!!######### &  $$$$$     %%%%%%%%%%%%%%%%%%%%%%%',
         u'        !!!!!!!!!###########     $       %%%%%%%%%%%%%%%%%%%%%%%',
         u"        !!!!!!!!!######## #        '''' %%%%%%%%%%%%%%%%%%%%%%%%",
         u"         !!!!!! ###########     ' ''''''%%%%%%%%%%%%%%%%%%%%%%%%",
         u"        !!!!!!  #########       ' '''''%%%%%%%%%%%%%%%%%%%%%%%%%",
         u"         !!!!   ########       ''''''''%%%%%%%%%%%%%%%%%%%%%%%%%",
         u"          !!     #######           (('''%%%%%%%%%%%%%%%%%%%%%%%%",
         u"               ) #######  #     (  ((('%%%%%%%%%%%%%%%%%%%%%%%%%",
         u'              )  ######## #    ((  (((((%%%%%%%%%%%%%%%%%%%%%%%%',
         u'            )))   ######      ((((((((((%%%%%%%%%%%%%%%%%%%%%%%%'
     ])
     c = ord('#') + 32
     if c >= 92: c = c + 1
     if c >= 34: c = c + 1
     self.failUnlessEqual(utfgrid.data[str(c)]['ADMIN'], 'Estonia')
     self.failUnlessEqual(utfgrid.data[str(c)]['POP_EST'], 1299371)
Beispiel #3
0
 def test_grid(self):
     mb = MBTiles('geography-class')
     tile = mb.grid(3, 4, 2)
     h = hashlib.md5(tile).hexdigest()
     self.failUnlessEqual('8d9cf7d9d0bef7cc1f0a37b49bf4cec7', h)
     p = re.compile("grid\((.+)\);")
     self.failUnless(p.match(tile))
     utfgrid = p.match(tile).group(1)
     utfgrid = edict(simplejson.loads(utfgrid))
     self.failUnlessEqual(utfgrid.grid[20:30], 
         [u'       !!!!!!!!!!!######### &  $$$$$     %%%%%%%%%%%%%%%%%%%%%%%', 
          u'        !!!!!!!!!###########     $       %%%%%%%%%%%%%%%%%%%%%%%', 
          u"        !!!!!!!!!######## #        '''' %%%%%%%%%%%%%%%%%%%%%%%%", 
          u"         !!!!!! ###########     ' ''''''%%%%%%%%%%%%%%%%%%%%%%%%", 
          u"        !!!!!!  #########       ' '''''%%%%%%%%%%%%%%%%%%%%%%%%%", 
          u"         !!!!   ########       ''''''''%%%%%%%%%%%%%%%%%%%%%%%%%", 
          u"          !!     #######           (('''%%%%%%%%%%%%%%%%%%%%%%%%", 
          u"               ) #######  #     (  ((('%%%%%%%%%%%%%%%%%%%%%%%%%",
          u'              )  ######## #    ((  (((((%%%%%%%%%%%%%%%%%%%%%%%%', 
          u'            )))   ######      ((((((((((%%%%%%%%%%%%%%%%%%%%%%%%'])
     c = ord('#') + 32
     if c >= 92: c = c + 1 
     if c >= 34: c = c + 1
     self.failUnlessEqual(utfgrid.data[str(c)]['ADMIN'], 'Estonia')
     self.failUnlessEqual(utfgrid.data[str(c)]['POP_EST'], 1299371)
Beispiel #4
0
def preview(request, name):
    try:
        mbtiles = MBTiles(name)
        z, x, y = mbtiles.center_tile()
        return tile(request, name, z, x, y)
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #5
0
 def test_name(self):
     # Name in metadata
     mb = MBTiles('geography-class')
     self.failUnlessEqual('geography-class', mb.id)
     self.failUnlessEqual(u'Geography Class', mb.name)
     # No name in metadata
     mb = MBTiles('france-35')
     self.failUnlessEqual(mb.name, mb.id)
Beispiel #6
0
 def test_tilejson(self):
     request = RequestFactory().get('/')
     mb = MBTiles('geography-class')
     jsonp = mb.tilejson(request)
     jsonp = edict(simplejson.loads(jsonp))
     self.failUnlessEqual('geography-class', mb.id)
     self.failUnlessEqual(mb.id, jsonp.id)
     self.failUnlessEqual(mb.name, jsonp.name)
     self.failUnlessEqual(mb.center, tuple(jsonp.center))
     self.failUnlessEqual([2.3401, 48.8503, 3], jsonp.center)
Beispiel #7
0
def tilejson(request, name):
    """ Serve the map configuration as JSONP """
    callback = request.GET.get('callback', 'grid')
    try:
        mbtiles = MBTiles(name)
        return HttpResponse(
            mbtiles.jsonp(request, callback),
            content_type='application/javascript; charset=utf8')
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #8
0
def grid(request, name, z, x, y):
    """ Serve a single UTF-Grid tile """
    callback = request.GET.get('callback', None)
    try:
        mbtiles = MBTiles(name)
        return HttpResponse(
            mbtiles.grid(z, x, y, callback),
            content_type='application/javascript; charset=utf8')
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #9
0
def tile(request, name, z, x, y):
    """ Serve a single image tile """
    try:
        mbtiles = MBTiles(name)
        data = mbtiles.tile(z, x, y)
        response = HttpResponse(mimetype='image/png')
        response.write(data)
        return response
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #10
0
 def test_tilejson(self):
     request = RequestFactory().get('/')
     mb = MBTiles('geography-class')
     jsonp = mb.tilejson(request)
     jsonp = edict(simplejson.loads(jsonp))
     self.failUnlessEqual('geography-class', mb.id)
     self.failUnlessEqual(mb.id, jsonp.id)
     self.failUnlessEqual(mb.name, jsonp.name)
     self.failUnlessEqual(mb.center, tuple(jsonp.center))
     self.failUnlessEqual([2.3401, 48.8503, 3], jsonp.center)
Beispiel #11
0
def tile(request, name, z, x, y):
    """ Serve a single image tile """
    try:
        mbtiles = MBTiles(name)
        data = mbtiles.tile(z, x, y)
        response = HttpResponse(mimetype='image/png')
        response.write(data)
        return response
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #12
0
 def test_id_is_filename(self):
     # full path
     mb = MBTiles(os.path.join(FIXTURES_PATH, 'france-35.mbtiles'))
     self.failUnlessEqual('france-35', mb.id)
     # relative to MBTILES_ROOT
     mb = MBTiles('france-35.mbtiles')
     self.failUnlessEqual('france-35', mb.id)
     # with default extension
     mb = MBTiles('france-35')
     self.failUnlessEqual('france-35', mb.id)
Beispiel #13
0
def jsonp(request, name):
    """ Serve the map configuration as JSONP """
    callback = request.GET.get('callback', 'grid')
    try:
        mbtiles = MBTiles(name)
        return HttpResponse(
            mbtiles.jsonp(callback),
            content_type = 'application/javascript; charset=utf8'
        )
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #14
0
def grid(request, name, z, x, y):
    """ Serve a single UTF-Grid tile """
    callback = request.GET.get('callback', 'grid')
    try:
        mbtiles = MBTiles(name)
        return HttpResponse(
            mbtiles.grid(z, x, y, callback),
            content_type = 'application/javascript; charset=utf8'
        )
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #15
0
def tilejson(request, name, catalog=None):
    """ Serve the map configuration as TileJSON """
    callback = request.GET.get('callback', None)
    try:
        mbtiles = MBTiles(name, catalog)
        tilejson = mbtiles.tilejson(request)
        if callback:
            tilejson = '%s(%s);' % (callback, tilejson)
        return HttpResponse(tilejson,
                            content_type='application/javascript; charset=utf8')
    except MBTilesNotFoundError, e:
        logger.warning(e)
Beispiel #16
0
 def test_jsonp(self):
     mb = MBTiles('geography-class')
     js = mb.jsonp('cb')
     p = re.compile("cb\((.+)\);")
     self.failUnless(p.match(js))
     jsonp = p.match(js).group(1)
     jsonp = edict(simplejson.loads(jsonp))
     self.failUnlessEqual('geography-class', mb.id)
     self.failUnlessEqual(mb.id, jsonp.id)
     self.failUnlessEqual(mb.name, jsonp.name)
     self.failUnlessEqual(mb.center, tuple(jsonp.center))
     self.failUnlessEqual([2.3401, 48.8503, 3], jsonp.center)
Beispiel #17
0
 def test_jsonp(self):
     mb = MBTiles('geography-class')
     js = mb.jsonp('cb')
     p = re.compile("cb\((.+)\);")
     self.failUnless(p.match(js))
     jsonp = p.match(js).group(1)
     jsonp = edict(simplejson.loads(jsonp))
     self.failUnlessEqual('geography-class', mb.id)
     self.failUnlessEqual(mb.id, jsonp.id)
     self.failUnlessEqual(mb.name, jsonp.name)
     self.failUnlessEqual(mb.center, tuple(jsonp.center))
     self.failUnlessEqual([2.3401, 48.8503, 3], jsonp.center)
Beispiel #18
0
 def test_preview(self):
     mb = MBTiles('geography-class')
     self.failUnlessEqual((2.3401, 48.8503, 3), mb.center)
     center = mb.center_tile()
     self.failUnlessEqual((3, 4, 2), center)
     h = hashlib.md5(mb.tile(*center)).hexdigest()
     self.failUnlessEqual('e7de86eeea4e558851a7c0f6cc3082ff', h)
     # HTTP
     response = self.client.get(reverse('mbtilesmap:preview', kwargs={'name':'geography-class'}))
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response['Content-type'], 'image/png')
     response = self.client.get(reverse('mbtilesmap:preview', kwargs={'name':'unknown'}))
     self.assertEqual(response.status_code, 404)
Beispiel #19
0
 def test_id(self):
     # full path
     mb = MBTiles(os.path.join(FIXTURES_PATH, 'france-35.mbtiles'))
     self.failUnlessEqual('france-35', mb.id)
     # relative to MBTILES_ROOT
     mb = MBTiles('france-35.mbtiles')
     self.failUnlessEqual('france-35', mb.id)
     # with default extension
     mb = MBTiles('france-35')
     self.failUnlessEqual('france-35', mb.id)
     # Unknown file
     self.assertRaises(MBTilesNotFoundError, MBTiles, ('unknown.mbtiles'))
     app_settings.MBTILES_ROOT = "random-path-xyz"
     self.assertRaises(MBTilesFolderError, MBTiles, ('unknown.mbtiles'))
Beispiel #20
0
 def test_center(self):
     mb = MBTiles('france-35')
     # Only one zoom level
     self.failUnlessEqual([3, 5], mb.zoomlevels)
     c = mb.center
     # MBTiles has no metadata, center will be (0, 0)
     self.failUnlessEqual((0, 0, 5), tuple(c))
     mb = MBTiles('geography-class')
     # Center is in metadata
     self.failUnlessEqual('2.3401,48.8503,7', mb.metadata.get('center'))
     # But zoomlevel is not among available
     self.failUnless(7 not in mb.zoomlevels)
     # Middle zoom is used
     self.failUnlessEqual(3, mb.middlezoom)
     self.failUnlessEqual((2.3401, 48.8503, 3), mb.center)
Beispiel #21
0
 def test_preview(self):
     mb = MBTiles('geography-class')
     self.failUnlessEqual((2.3401, 48.8503, 3), mb.center)
     center = mb.center_tile()
     self.failUnlessEqual((3, 4, 2), center)
     h = hashlib.md5(mb.tile(*center)).hexdigest()
     self.failUnlessEqual('e7de86eeea4e558851a7c0f6cc3082ff', h)
     # HTTP
     response = self.client.get(
         reverse('preview', kwargs={'name': 'geography-class'}))
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response['Content-type'], 'image/png')
     response = self.client.get(
         reverse('preview', kwargs={'name': 'unknown'}))
     self.assertEqual(response.status_code, 404)
Beispiel #22
0
 def test_center_is_0_0_if_no_metadata(self):
     mb = MBTiles('france-35')
     # Only one zoom level
     self.failUnlessEqual([3, 5], mb.zoomlevels)
     c = mb.center
     # MBTiles has no metadata, center will be (0, 0)
     self.failUnlessEqual((0, 0, 5), tuple(c))
Beispiel #23
0
 def test_center_come_from_metadata(self):
     mb = MBTiles('geography-class')
     # Center is in metadata
     self.failUnlessEqual('2.3401,48.8503,7', mb.metadata.get('center'))
     # But zoomlevel is not among available
     self.failUnless(7 not in mb.zoomlevels)
     # Middle zoom is used
     self.failUnlessEqual(3, mb.middlezoom)
     self.failUnlessEqual((2.3401, 48.8503, 3), mb.center)
Beispiel #24
0
 def test_bounds(self):
     mb = MBTiles('france-35')
     # MBTiles has no metadata, bounds will be (-180, -90, 180, 90)
     self.failUnlessEqual((-180, -90, 180, 90), mb.bounds)
     mb = MBTiles('geography-class')
     self.failUnlessEqual((-18.6328, 32.25, 29.8828, 60.2398), mb.bounds)
Beispiel #25
0
 def test_bounds_come_from_metadata(self):
     mb = MBTiles('geography-class')
     self.failUnlessEqual((-18.6328, 32.25, 29.8828, 60.2398), mb.bounds)
Beispiel #26
0
 def test_name_come_from_metadata(self):
     # Name in metadata
     mb = MBTiles('geography-class')
     self.failUnlessEqual('geography-class', mb.id)
     self.failUnlessEqual(u'Geography Class', mb.name)
Beispiel #27
0
 def test_name_is_filename_if_no_metadata(self):
     # No name in metadata
     mb = MBTiles('france-35')
     self.failUnlessEqual(mb.name, mb.id)
Beispiel #28
0
 def test_tile(self):
     mb = MBTiles('geography-class')
     tile = mb.tile(3, 4, 2)
     h = hashlib.md5(tile).hexdigest()
     self.failUnlessEqual('e7de86eeea4e558851a7c0f6cc3082ff', h)
Beispiel #29
0
 def test_bounds_are_world_if_no_metadata(self):
     mb = MBTiles('france-35')
     # MBTiles has no metadata, bounds will be (-180, -90, 180, 90)
     self.failUnlessEqual((-180, -90, 180, 90), mb.bounds)
Beispiel #30
0
 def test_tile(self):
     mb = MBTiles('geography-class')
     tile = mb.tile(3, 4, 2)
     h = hashlib.md5(tile).hexdigest()
     self.failUnlessEqual('e7de86eeea4e558851a7c0f6cc3082ff', h)
Beispiel #31
0
 def test_filesize(self):
     mb = MBTiles('france-35')
     self.failUnlessEqual(117760, mb.filesize)
Beispiel #32
0
 def test_mbtiles_should_fail_if_mbtiles_does_not_exist(self):
     MBTiles('country', catalog='pouet')
     self.assertRaises(MBTilesNotFoundError,
                       MBTiles,
                       'country',
                       catalog='paf')