Source code for pyowm.tiles.tile_manager

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pyowm.commons.enums import ImageTypeEnum
from pyowm.commons.http_client import HttpClient
from pyowm.commons.image import Image
from pyowm.commons.tile import Tile
from pyowm.tiles.uris import ROOT_TILE_URL, NAMED_MAP_LAYER_URL


[docs] class TileManager: """ A manager objects that reads OWM map layers tile images . :param API_key: the OWM Weather API key :type API_key: str :param map_layer: the layer for which you want tiles fetched. Allowed map layers are specified by the `pyowm.tiles.enum.MapLayerEnum` enumerator class. :type map_layer: str :param config: the configuration dictionary :type config: dict :returns: a *TileManager* instance :raises: *AssertionError* when no API Key or no map layer is provided, or map layer name is not a string """ def __init__(self, API_key, map_layer, config): assert API_key is not None, 'You must provide a valid API Key' self.API_key = API_key assert map_layer is not None, 'You must provide a valid map layer name' assert isinstance(map_layer, str), 'Map layer name must be a string' self.map_layer = map_layer assert isinstance(config, dict) self.http_client = HttpClient(API_key, config, ROOT_TILE_URL, admits_subdomains=False)
[docs] def get_tile(self, x, y, zoom): """ Retrieves the tile having the specified coordinates and zoom level :param x: horizontal tile number in OWM tile reference system :type x: int :param y: vertical tile number in OWM tile reference system :type y: int :param zoom: zoom level for the tile :type zoom: int :returns: a `pyowm.tiles.Tile` instance """ status, data = self.http_client.get_png( NAMED_MAP_LAYER_URL % self.map_layer + '/%s/%s/%s.png' % (zoom, x, y), params={'appid': self.API_key}) img = Image(data, ImageTypeEnum.PNG) return Tile(x, y, zoom, self.map_layer, img)
def __repr__(self): return "<%s.%s - layer_name=%s>" % (__name__, self.__class__.__name__, self.map_layer)