예제 #1
0
 def test_folder(self):
     c = Disk('foo', '/tmp/')
     self.assertEqual(c.folder, '/tmp/foo')
     c.basename = 'bar'
     self.assertEqual(c.folder, '/tmp/bar')
예제 #2
0
    def __init__(self, **kwargs):
        """
        Manipulates tiles in general. Gives ability to list required tiles on a
        bounding box, download them, render them, extract them from other mbtiles...

        Keyword arguments:
        cache -- use a local cache to share tiles between runs (default True)

        tiles_dir -- Local folder containing existing tiles if cache is
                     True, or where temporary tiles will be written otherwise
                     (default DEFAULT_TMP_DIR)

        tiles_url -- remote URL to download tiles (*default DEFAULT_TILES_URL*)
        tiles_headers -- HTTP headers to send (*default empty*)

        stylefile -- mapnik stylesheet file (*to render tiles locally*)

        mbtiles_file -- A MBTiles file providing tiles (*to extract its tiles*)

        wms_server -- A WMS server url (*to request tiles*)
        wms_layers -- The list of layers to be requested
        wms_options -- WMS parameters to be requested (see ``landez.reader.WMSReader``)

        tile_size -- default tile size (default DEFAULT_TILE_SIZE)
        tile_format -- default tile format (default DEFAULT_TILE_FORMAT)
        """
        self.tile_size = kwargs.get('tile_size', DEFAULT_TILE_SIZE)
        self.tile_format = kwargs.get('tile_format', DEFAULT_TILE_FORMAT)

        # Tiles Download
        self.tiles_url = kwargs.get('tiles_url', DEFAULT_TILES_URL)
        self.tiles_subdomains = kwargs.get('tiles_subdomains', DEFAULT_TILES_SUBDOMAINS)
        self.tiles_headers = kwargs.get('tiles_headers')

        # Tiles rendering
        self.stylefile = kwargs.get('stylefile')

        # Grids rendering
        self.grid_fields = kwargs.get('grid_fields', [])
        self.grid_layer = kwargs.get('grid_layer', 0)

        # MBTiles reading
        self.mbtiles_file = kwargs.get('mbtiles_file')

        # WMS requesting
        self.wms_server = kwargs.get('wms_server')
        self.wms_layers = kwargs.get('wms_layers', [])
        self.wms_options = kwargs.get('wms_options', {})

        if self.mbtiles_file:
            self.reader = MBTilesReader(self.mbtiles_file, self.tile_size)
        elif self.wms_server:
            assert self.wms_layers, _("Requires at least one layer (see ``wms_layers`` parameter)")
            self.reader = WMSReader(self.wms_server, self.wms_layers, self.tiles_headers,
                                    self.tile_size, **self.wms_options)
            if 'format' in self.wms_options:
                self.tile_format = self.wms_options['format']
                logger.info(_("Tile format set to %s") % self.tile_format)
        elif self.stylefile:
            self.reader = MapnikRenderer(self.stylefile, self.tile_size)
        else:
            mimetype, encoding = mimetypes.guess_type(self.tiles_url)
            if mimetype and mimetype != self.tile_format:
                self.tile_format = mimetype
                logger.info(_("Tile format set to %s") % self.tile_format)
            self.reader = TileDownloader(self.tiles_url, headers=self.tiles_headers,
                                         subdomains=self.tiles_subdomains, tilesize=self.tile_size)

        # Tile files extensions
        self._tile_extension = mimetypes.guess_extension(self.tile_format, strict=False)
        assert self._tile_extension, _("Unknown format %s") % self.tile_format
        if self._tile_extension == '.jpe':
            self._tile_extension = '.jpeg'

        # Cache
        tiles_dir = kwargs.get('tiles_dir', DEFAULT_TMP_DIR)
        if kwargs.get('cache', True):
            self.cache = Disk(self.reader.basename, tiles_dir, extension=self._tile_extension)
            if kwargs.get('cache_scheme'):
                self.cache.scheme = kwargs.get('cache_scheme')
        else:
            self.cache = Dummy(extension=self._tile_extension)

        # Overlays
        self._layers = []
        # Filters
        self._filters = []
        # Number of tiles rendered/downloaded here
        self.rendered = 0
예제 #3
0
파일: tests.py 프로젝트: plorry/landez
 def test_folder(self):
     c = Disk('foo', '/tmp/')
     self.assertEqual(c.folder, '/tmp/foo')
     c.basename = 'bar'
     self.assertEqual(c.folder, '/tmp/bar')