示例#1
0
 def test_create_map_with_address(self):
     """Checks the correct url generated with an address"""
     center_map = CenterMap(address=self.address)
     # cmap1 = CenterMap(lat=48.858278,lon=2.294489,maptype='satellite')
     self.assertEqual(
         center_map.generate_url(),
         'https://maps.google.com/maps/api/staticmap?maptype=roadmap&format=png&scale=1&center=151%20third%20st%2C%20san%20francisco%2C%20ca&zoom=17&size=400x400&sensor=false&language=en')
示例#2
0
    def test_centermap_sat(self):

        cmap_sat = CenterMap(lat=48.858278, lon=2.294489, maptype='satellite')

        self.assertEqual(
            cmap_sat.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?maptype=satellite&'
            'format=png&scale=1&center=48.858278%2C2.294489&zoom=17&'
            'size=400x400&sensor=false&language=en')
示例#3
0
    def test_create_map_with_address(self):
        """Checks the correct url generated with an address"""
        center_map = CenterMap(address=self.address)

        self.assertEqual(
            center_map.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&'
            'format=png&scale=1&center=151%20third%20st%2C%20san%20francisco'
            '%2C%20ca&zoom=17&size=400x400&sensor=false&language=en')
示例#4
0
    def test_centermap_sat(self):

        cmap_sat = CenterMap(lat=48.858278, lon=2.294489, maptype='satellite')

        self.assertEqual(
            cmap_sat.generate_url(),
            'https://maps.google.com/maps/api/staticmap?maptype=satellite&f'
            'ormat=png&scale=1&center=48.858278,2.294489&zoom=17&'
            'size=400x400&sensor=false&language=en')
示例#5
0
 def test_api_key(self):
     cmap = CenterMap(
         lat=48.858278, lon=2.294489, maptype='satellite', key='abcdefghi'
     )
     url = cmap.generate_url()
     self.assertEqual(
         cmap.generate_url(),
         'https://maps.googleapis.com/maps/api/staticmap?key=abcdefghi&maptype=satellite&'
         'format=png&scale=1&center=48.858278%2C2.294489&zoom=17&'
         'size=400x400&sensor=false&language=en')
示例#6
0
    def test_channel(self):
        cmap = CenterMap(lat=48.858278,
                         lon=2.294489,
                         maptype='satellite',
                         clientid='gme-exampleid',
                         secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=',
                         channel='somechannel')
        self.assertEqual(
            cmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=satellite&'
            'format=png&scale=1&center=48.858278%2C2.294489&zoom=17&'
            'size=400x400&sensor=false&language=en&channel=somechannel&'
            'signature=Y-D-iEMbWPfUTjBtKEYDbGUtElY=')

        vmap = VisibleMap(maptype='terrain',
                          clientid='gme-exampleid',
                          secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=',
                          channel='somechannel')
        vmap.add_address('Sugarbowl, Truckee, CA')
        vmap.add_address('Tahoe City, CA')

        self.assertEqual(
            vmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=terrain&'
            'format=png&scale=1&size=400x400&sensor=false&'
            'visible=Sugarbowl%2C%20Truckee%2C%20CA%7CTahoe%20City%2C%20CA&'
            'language=en&channel=somechannel&signature=KQvz4Q3rB6Pmr7sJ_sM4qfKQzDo='
        )

        styles = [{
            'feature': 'road.highway',
            'element': 'geomoetry',
            'rules': {
                'color': '#c280e9'
            }
        }]
        decorated_map = DecoratedMap(style=styles,
                                     clientid='gme-exampleid',
                                     secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=',
                                     channel='somechannel')
        decorated_map.add_marker(
            LatLonMarker('37.422782', '-122.085099', label='G'))
        self.assertEqual(
            decorated_map.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=roadmap&'
            'format=png&scale=1&size=400x400&sensor=false&language=en&'
            'markers=%7Clabel%3AG%7C37.422782%2C-122.085099&'
            'style=feature%3Aroad.highway%7Celement%3Ageomoetry%7C'
            'color%3A0xc280e9%7C&channel=somechannel&signature=IPHCEq1ifL7Chuwu604pMtN6eGw='
        )
示例#7
0
def generate_metadata_gmaps(name, lat, lon, zoom, pixels, gmaps_key):
    """
    Generates metadata of provided parameters for image
    :param name: string
        name identifier of the image group, e.g. name of city
    :param label: int
        one of 0,1,2,3,4 where 0 maximum natural and 4 maximum man-made
    :param lat: float
        central lat coordinate
    :param lon: float
        central lon coordinate
    :param zoom: int
        google maps api zoom
    :param pixels: int
        maximum of 640
    :param gmaps_key: string
        Google Maps API key
    :return:
    """
    img_metadata = {}
    img_metadata["name"] = name
    img_metadata["lat"] = lat
    img_metadata["lon"] = lon
    img_metadata["zoom"] = zoom
    img_metadata["pixels"] = pixels
    meters_per_px = zoom_in_meters_per_pixel(zoom, lat)
    image_size = meters_per_px * pixels
    img_metadata["meters_per_px"] = meters_per_px
    img_metadata["img_size"] = image_size
    url = CenterMap(lat=lat, lon=lon, maptype='satellite', size_x=pixels, size_y=pixels, zoom=zoom,
                    key=gmaps_key).generate_url()
    img_metadata["url"] = url
    img_metadata["filename"] = name + '_' + str(lat) + '_' + str(lon) + '_' + str(zoom) + '_' + str(pixels) + '.png'
    img_metadata["saved_dt"] = datetime.datetime.today()
    return img_metadata
示例#8
0
 def test_api_key_client_id_exclusive(self):
     self.assertRaises(
         ValueError, lambda: CenterMap(lat=48.858278,
                                       lon=2.294489,
                                       maptype='satellite',
                                       key='abcdefghi',
                                       clientid='gme-exampleid'))
示例#9
0
def download_and_save_image(name, lat, lon, zoom, pixels, gmaps_key, folder='', save_image=True):
    """
    Downloads and returns an image from Google Maps static API
    :param lat: float
        central lat coordinate
    :param lon: float
        central lon coordinate
    :param zoom: int
        google maps api zoom
    :param pixels: int
        maximum of 640
    :param gmaps_key: string
        Google Maps API key
    :param folder: string
        where to save the image
    :param save_image: bool
        whether to save the image
    :return:
    """
    url = CenterMap(lat=lat, lon=lon, maptype='satellite', size_x=pixels, size_y=pixels, zoom=zoom,
                    key=gmaps_key).generate_url()
    image = Image.open(BytesIO(request.urlopen(url).read()))

    fname_suffix = name + '_' + str(lat) + '_' + str(lon) + '_' + str(zoom) + '_' + str(pixels) + '.png'
    if save_image:
        image.save(folder + fname_suffix, "PNG")
    return image
示例#10
0
    def test_client_id_and_private_key(self):
        cmap = CenterMap(lat=48.858278,
                         lon=2.294489,
                         maptype='satellite',
                         clientid='gme-exampleid',
                         secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=')
        self.assertEqual(
            cmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=satellite&'
            'format=png&scale=1&center=48.858278%2C2.294489&zoom=17&'
            'size=400x400&sensor=false&language=en&'
            'signature=PsD-OrvyjeIflTpH1p6v5hElJrE=')

        vmap = VisibleMap(maptype='terrain',
                          clientid='gme-exampleid',
                          secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=')
        vmap.add_address('Sugarbowl, Truckee, CA')
        vmap.add_address('Tahoe City, CA')

        self.assertEqual(
            vmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=terrain&'
            'format=png&scale=1&size=400x400&sensor=false&'
            'visible=Sugarbowl%2C%20Truckee%2C%20CA%7CTahoe%20City%2C%20CA&'
            'language=en&signature=0_hfvOReb4YQfq7sGyAs0dLEDEo=')

        styles = [{
            'feature': 'road.highway',
            'element': 'geomoetry',
            'rules': {
                'color': '#c280e9'
            }
        }]
        decorated_map = DecoratedMap(style=styles,
                                     clientid='gme-exampleid',
                                     secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=')
        decorated_map.add_marker(
            LatLonMarker('37.422782', '-122.085099', label='G'))
        self.assertEqual(
            decorated_map.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=roadmap&'
            'format=png&scale=1&size=400x400&sensor=false&language=en&'
            'markers=%7Clabel%3AG%7C37.422782%2C-122.085099&'
            'style=feature%3Aroad.highway%7Celement%3Ageomoetry%7C'
            'color%3A0xc280e9%7C&signature=bkshPe4g0vRn1Wt3n-rUZvEEN4M=')
示例#11
0
def download_image(lat, lon, zoom, pixels, gmaps_key, crop_px=20, name='', dataset='', folder='', plot_image=False, save_image=True):
    """
    Downloads and returns (optionally plots) an image from Google Maps static API
    :param lat: float
        central lat coordinate
    :param lon: float
        central lon coordinate
    :param zoom: int
        google maps api zoom
    :param pixels: int
        maximum of 640
    :param gmaps_key: string
        Google Maps API key
    :param crop_px: int
        number of pixels to crop for each border
    :param name: str
        name identifier of the image group, e.g. name of city
    :param dataset: str
        dataset identifier
    :param folder: string
        where to save the image
    :param plot_image: bool
        whether to plot the image
    :param save_image: bool
        whether to save the image
    :return:
    """

    metadata = {}
    metadata["lat"] = lat
    metadata["lon"] = lon
    metadata["zoom"] = zoom
    metadata["pixels"] = pixels
    metadata["name"] = name
    metadata["dataset"] = dataset

    meters_per_px = zoom_in_meters_per_pixel(zoom, lat)
    image_size = meters_per_px * pixels
    metadata["meters_per_px"] = meters_per_px
    metadata["img_size"] = image_size

    # download image
    url = CenterMap(lat=lat, lon=lon, maptype='satellite', size_x=pixels+2*crop_px, size_y=pixels+2*crop_px, zoom=zoom, key=gmaps_key).generate_url()
    metadata["url"] = url
    image = Image.open(BytesIO(request.urlopen(url).read()))
    image = ImageOps.crop(image, (crop_px, crop_px, crop_px, crop_px)) # borders: left, up, right, bottom

    metadata["filename"] = name + '_' + str(lat) + '_' + str(lon) + '_' + str(zoom) + '_' + str(pixels) + '.png'
    if save_image:
        image.save(folder + metadata["filename"], "PNG")
    metadata["saved_dt"] = datetime.datetime.today()

    if plot_image:
        image.show()
        plt.show()

    return image, metadata
示例#12
0
    def test_channel(self):
        cmap = CenterMap(
            lat=48.858278, lon=2.294489, maptype='satellite',
            clientid='gme-exampleid', secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=',
            channel='somechannel'
        )
        self.assertEqual(
            cmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=satellite&'
            'format=png&scale=1&center=48.858278%2C2.294489&zoom=17&'
            'size=400x400&sensor=false&language=en&channel=somechannel&'
            'signature=Y-D-iEMbWPfUTjBtKEYDbGUtElY=')

        vmap = VisibleMap(maptype='terrain', clientid='gme-exampleid', secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=', channel='somechannel')
        vmap.add_address('Sugarbowl, Truckee, CA')
        vmap.add_address('Tahoe City, CA')

        self.assertEqual(
            vmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=terrain&'
            'format=png&scale=1&size=400x400&sensor=false&'
            'visible=Sugarbowl%2C%20Truckee%2C%20CA%7CTahoe%20City%2C%20CA&'
            'language=en&channel=somechannel&signature=KQvz4Q3rB6Pmr7sJ_sM4qfKQzDo=')

        styles = [{
            'feature': 'road.highway',
            'element': 'geomoetry',
            'rules': {
                'color': '#c280e9'
            }
        }]
        decorated_map = DecoratedMap(style=styles, clientid='gme-exampleid', secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=', channel='somechannel')
        decorated_map.add_marker(LatLonMarker('37.422782', '-122.085099',
                                              label='G'))
        self.assertEqual(
            decorated_map.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=roadmap&'
            'format=png&scale=1&size=400x400&sensor=false&language=en&'
            'markers=%7Clabel%3AG%7C37.422782%2C-122.085099&'
            'style=feature%3Aroad.highway%7Celement%3Ageomoetry%7C'
            'color%3A0xc280e9%7C&channel=somechannel&signature=IPHCEq1ifL7Chuwu604pMtN6eGw='
        )
示例#13
0
    def test_client_id_and_private_key(self):
        cmap = CenterMap(
            lat=48.858278, lon=2.294489, maptype='satellite',
            clientid='gme-exampleid', secret='bbXgwW0k3631Bl2V5Z34gs9vYgf='
        )
        self.assertEqual(
            cmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=satellite&'
            'format=png&scale=1&center=48.858278%2C2.294489&zoom=17&'
            'size=400x400&sensor=false&language=en&'
            'signature=PsD-OrvyjeIflTpH1p6v5hElJrE=')

        vmap = VisibleMap(maptype='terrain', clientid='gme-exampleid', secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=')
        vmap.add_address('Sugarbowl, Truckee, CA')
        vmap.add_address('Tahoe City, CA')

        self.assertEqual(
            vmap.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=terrain&'
            'format=png&scale=1&size=400x400&sensor=false&'
            'visible=Sugarbowl%2C%20Truckee%2C%20CA%7CTahoe%20City%2C%20CA&'
            'language=en&signature=0_hfvOReb4YQfq7sGyAs0dLEDEo=')

        styles = [{
            'feature': 'road.highway',
            'element': 'geomoetry',
            'rules': {
                'color': '#c280e9'
            }
        }]
        decorated_map = DecoratedMap(style=styles, clientid='gme-exampleid', secret='bbXgwW0k3631Bl2V5Z34gs9vYgf=')
        decorated_map.add_marker(LatLonMarker('37.422782', '-122.085099',
                                              label='G'))
        self.assertEqual(
            decorated_map.generate_url(),
            'https://maps.googleapis.com/maps/api/staticmap?client=gme-exampleid&maptype=roadmap&'
            'format=png&scale=1&size=400x400&sensor=false&language=en&'
            'markers=%7Clabel%3AG%7C37.422782%2C-122.085099&'
            'style=feature%3Aroad.highway%7Celement%3Ageomoetry%7C'
            'color%3A0xc280e9%7C&signature=bkshPe4g0vRn1Wt3n-rUZvEEN4M='
        )
示例#14
0
def generate_gmaps_links(lat, long, zoom, pixels, num_images, center=True, xy_to_ij=True):
    """
    generates list with google maps static api links

    paramter defintion as in function 'lat_long_array'
    """
    coord = lat_long_array(lat, long, zoom, pixels, num_images, center=center, xy_to_ij=xy_to_ij)

    urls = []
    for i in range(coord.shape[0]):
        for j in range(coord.shape[1]):
            cmap = CenterMap(lat=coord[i, j, 0],
                             lon=coord[i, j, 1],
                             maptype='satellite',
                             size_x=pixels,
                             size_y=pixels,
                             zoom=zoom,
                             key=os.getenv("GMAPS_API_KEY")
                             )
            urls.append(cmap.generate_url())
    return urls
示例#15
0
def road_segmentation(coord):

    cmap = CenterMap(lat=coord[0],
                     lon=coord[1],
                     size_x=640,
                     size_y=640,
                     zoom=18,
                     scale=2)
    URL = cmap.generate_url()
    URL += "&style=feature:all|element:labels|visibility:off"

    with urllib.request.urlopen(URL) as url:
        f = io.BytesIO(url.read())

    img = np.array(Image.open(f).convert("RGB"))
    img = rgb2gray(img)

    cmap_sat = CenterMap(lat=coord[0],
                         lon=coord[1],
                         maptype='satellite',
                         size_x=640,
                         size_y=640,
                         zoom=18,
                         scale=2)
    img_sat = skimage.io.imread(cmap_sat.generate_url())

    threshold = 0.909
    mask = (img > threshold - .001) & (img < threshold + .001)
    mask = np.invert(mask)

    color_mask = np.zeros(img_sat.shape)
    color_mask[mask] = [255, 0, 0]

    alpha = .6
    blended = alpha * img_sat + (1 - alpha) * color_mask

    return exposure.rescale_intensity(blended)
示例#16
0
"""Examples of the various maps that can be created with motionless."""
from __future__ import print_function
from motionless import AddressMarker, DecoratedMap, CenterMap, VisibleMap

cmap = CenterMap(address='151 third st, san francisco, ca')

cmap_sat = CenterMap(lat=48.858278, lon=2.294489, maptype='satellite')

vmap = VisibleMap(maptype='terrain')
vmap.add_address('Sugarbowl, Truckee, CA')
vmap.add_address('Tahoe City, CA')

dmap = DecoratedMap()
dmap.add_marker(AddressMarker('1 Infinite Loop, Cupertino, CA', label='A'))
dmap.add_marker(AddressMarker('1600 Amphitheatre Parkway Mountain View, CA',
                              label='G'))


htmlPage = """
<html>
<body>
<h2>SFMOMA</h2>
<img src="%s"/>
<h2>La Tour Eiffel</h2>
<img src="%s"/>
<h2>Tahoe City and Sugarbowl</h2>
<img src="%s"/>
<h2>Google and Apple</h2>
<img src="%s"/>
</body>
</html>
示例#17
0
from motionless import AddressMarker, LatLonMarker,DecoratedMap, CenterMap, VisibleMap

cmap = CenterMap(address='151 third st, san francisco, ca')

cmap1 = CenterMap(lat=48.858278,lon=2.294489,maptype='satellite')

vmap = VisibleMap(maptype='terrain')
vmap.add_address('Sugarbowl, Truckee, CA')
vmap.add_address('Tahoe City, CA')

dmap = DecoratedMap()
dmap.add_marker(AddressMarker('1 Infinite Loop, Cupertino, CA',label='A'))
dmap.add_marker(AddressMarker('1600 Amphitheatre Parkway Mountain View, CA',label='G'))


htmlPage = """
<html>
<body>
<h2>SFMOMA</h2>
<img src="%s"/>
<h2>La Tour Eiffel</h2>
<img src="%s"/>
<h2>Tahoe City and Sugarbowl</h2>
<img src="%s"/>
<h2>Google and Apple</h2>
<img src="%s"/>
</body>
</html>	
""" % (
    cmap.generate_url(), 
    cmap1.generate_url(), 
示例#18
0
def index(request, lang="EN"):
    #template = loader.get_template('cv_parser/index.html')
    language = "Français"
    language_code = "fr"
    languages = {'language': 'English', 'code': 'us', 'link': 'EN'}
    if lang == "FR":
        with open("cv_parser/fr.json", 'r') as config:
            json_config = json.loads(config.read())
            config.close()
    elif lang == "EN":
        language = "English"
        languages = {'language': 'Français', 'code': 'fr', 'link': 'FR'}
        language_code = "us"
        with open("cv_parser/en.json", 'r') as config:
            json_config = json.loads(config.read())
            config.close()
    else:
        with open("cv_parser/fr.json", 'r') as config:
            json_config = json.loads(config.read())
            config.close()
    #with open("cv_parser/cache.json","r") as cache_file:
    #	json_cache=json.loads(cache_file.read())
    #	cache_file.close()
    #hash_of_adress = json_config["contact"]["adress"].encode("utf-8")
    #hash_of_adress = hashlib.md5(hash_of_adress).hexdigest()

    #if json_cache["adress"] != hash_of_adress:
    try:
        cmap = CenterMap(address=json_config["contact"]["adress"],
                         zoom=15,
                         key="AIzaSyCKM9tkv_Rc9fMhuwLhwNwvW8C9Y6hNuNg=")
        requ = req.Request(cmap.generate_url())
        pic = req.urlopen(requ)

        filePath = 'cv_parser/static/cv_parser/images/static_map.png'
        with open(filePath, 'wb') as localFile:
            localFile.write(pic.read())
            #json_cache["adress"] = hash_of_adress
            #with open("cv_parser/cache.json","w") as cache_file:
            #	json.dump(json_cache, cache_file)
            #	cache_file.close()
    except:
        print(
            "Error getting map image , put it manually in cv_parser/static/cv_parser/images/static_map.png"
        )

    #hash_of_config = json.dumps(json_config, sort_keys = True).encode("utf-8")
    #hash_of_config = hashlib.md5(hash_of_config).hexdigest()
    #logger.info(json_cache[lang.lower()+"_pdf_hash"])
    #logger.info(hash_of_config)
    #if json_cache[lang.lower()+"_pdf_hash"] != hash_of_config:
    template.create_template(json_config)
    #logger.info("new json")
    #json_cache[lang.lower()+"_pdf_hash"] = hash_of_config
    #with open("cv_parser/cache.json","w") as cache_file:
    #	json.dump(json_cache, cache_file)
    #	cache_file.close()

    # urllib.urlretrieve(self.url, filePath)

    return render(
        request, 'cv_parser/index.html', {
            'config': json_config,
            'language': language,
            'language_code': language_code,
            'languages': languages
        })
示例#19
0
 def test_client_id_requires_secret(self):
     self.assertRaises(
         ValueError, lambda: CenterMap(lat=48.858278,
                                       lon=2.294489,
                                       maptype='satellite',
                                       clientid='gme-exampleid'))
示例#20
0
 def test_channel_requires_client_id(self):
     self.assertRaises(
         ValueError, lambda: CenterMap(lat=48.858278,
                                       lon=2.294489,
                                       maptype='satellite',
                                       channel='somechannel'))
示例#21
0
from motionless import CenterMap
from skimage.color import rgb2gray
from scipy import ndimage as ndi
from PIL import Image
import requests
import numpy as np
from io import StringIO
from skimage import io

cmap = CenterMap(lat=38.6038808,
                 lon=-3.4694234,
                 size_x=640,
                 size_y=640,
                 zoom=18,
                 scale=2,
                 style="feature:all|element:labels|visibility:off")
cmap_sat = CenterMap(lat=38.6038808,
                     lon=-3.4694234,
                     maptype='satellite',
                     size_x=640,
                     size_y=640,
                     zoom=18,
                     scale=2)

url = cmap.generate_url()
url += "&style=feature:all|element:labels|visibility:off"
# response = requests.get(url)
# img = np.array(Image.open(StringIO(response.content)))
# img_sat = io.imread(cmap_sat.generate_url())
# img = io.imread("https://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&center=38.7012335,-3.4256068&zoom=19&size=1280x1280&style=feature:all|element:labels|visibility:off&key=AIzaSyDvgF0JSBrlYLDzY7pPqtcBSgGslmaAlzw")
img = io.imread(url)
示例#22
0
import numpy as np
from motionless import CenterMap
import skimage.io
from skimage import color
from skimage.color import rgb2gray
from PIL import Image
import urllib.request
import io
from skimage import exposure

#39.030236,-3.3761257
#38.321221,-3.5573312
#lat=38.6038808, lon=-3.4694234
cmap = CenterMap(lat=37.9039882,
                 lon=-4.7740557,
                 size_x=640,
                 size_y=640,
                 zoom=18,
                 scale=2)
URL = cmap.generate_url()
URL = "https://maps.googleapis.com/maps/api/staticmap?key=AIzaSyDvgF0JSBrlYLDzY7pPqtcBSgGslmaAlzw&center=38.043824,%20-3.985887&zoom=18&format=png&maptype=roadmap&style=element:geometry%7Ccolor:0x212121&style=element:labels%7Cvisibility:off&style=element:labels.icon%7Cvisibility:off&style=element:labels.text.fill%7Ccolor:0x757575&style=element:labels.text.stroke%7Ccolor:0x212121&style=feature:administrative%7Celement:geometry%7Ccolor:0x757575%7Cvisibility:off&style=feature:administrative.country%7Celement:labels.text.fill%7Ccolor:0x9e9e9e&style=feature:administrative.land_parcel%7Cvisibility:off&style=feature:administrative.locality%7Celement:labels.text.fill%7Ccolor:0xbdbdbd&style=feature:administrative.neighborhood%7Cvisibility:off&style=feature:poi%7Cvisibility:off&style=feature:poi%7Celement:labels.text.fill%7Ccolor:0x757575&style=feature:poi.park%7Celement:geometry%7Ccolor:0x181818&style=feature:poi.park%7Celement:labels.text.fill%7Ccolor:0x616161&style=feature:poi.park%7Celement:labels.text.stroke%7Ccolor:0x1b1b1b&style=feature:road%7Celement:geometry.fill%7Ccolor:0x2c2c2c&style=feature:road%7Celement:labels.icon%7Cvisibility:off&style=feature:road%7Celement:labels.text.fill%7Ccolor:0x8a8a8a&style=feature:road.arterial%7Celement:geometry%7Ccolor:0x373737&style=feature:road.highway%7Celement:geometry%7Ccolor:0x3c3c3c&style=feature:road.highway.controlled_access%7Celement:geometry%7Ccolor:0x4e4e4e&style=feature:road.local%7Celement:labels.text.fill%7Ccolor:0x616161&style=feature:transit%7Cvisibility:off&style=feature:transit%7Celement:labels.text.fill%7Ccolor:0x757575&style=feature:water%7Celement:geometry%7Ccolor:0x000000&style=feature:water%7Celement:labels.text.fill%7Ccolor:0x3d3d3d&size=640x640&scale=2"

with urllib.request.urlopen(URL) as url:
    f = io.BytesIO(url.read())

img = np.array(Image.open(f).convert("RGB"))
# img = rgb2gray(img)
skimage.io.imshow(exposure.rescale_intensity(img))
skimage.io.show()

threshold = 160
mask = (img > threshold - 10) & (img < threshold + 10)
def map_html(entry):
    lat, lon = get_lat_lon(entry)
    with open(os.path.join(file_path, "api_key.txt")) as f:
        key = f.read()
    cmap = CenterMap(lat=lat, lon=lon, maptype="terrain", zoom=10, key=key)
    return "<img src='{}'>".format(cmap.generate_url())