diff options
Diffstat (limited to 'googlemaps.py~')
-rw-r--r-- | googlemaps.py~ | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/googlemaps.py~ b/googlemaps.py~ deleted file mode 100644 index 81a8060..0000000 --- a/googlemaps.py~ +++ /dev/null @@ -1,124 +0,0 @@ -MIN_SATELLITE_ZOOM = -5 -MIN_MAP_ZOOM = 0 -MIN_OVERLAY_ZOOM = 0 -MIN_RELIEF_ZOOM = 2 - -def fetch(url): - import os - img = os.popen('curl -f "%(url)s"' % vars(), 'r').read() - if len(img): - return img - return None - -def image_number_to_sel(x, y, zoom, sel_t = ['q','r','t','s']): - x = int(x) - y = int(y) - bits = range(17-zoom); bits.reverse() - sel = 't' - for bit in bits: - index = 0 - if x & (1<<bit): - index |= 1 - if y & (1<<bit): - index |= 2 - sel += sel_t[index] - return sel - -def fetch_satellite_img(x, y, zoom): - if zoom < MIN_SATELLITE_ZOOM: - return None - x = int(x) - y = int(y) - num = (x+y)%4 - sel = image_number_to_sel(x, y, zoom) - url = "http://kh%(num)d.google.com/kh?n=404&v&t=%(sel)s" % vars() - return fetch(url) - -def fetch_map_img(x, y, zoom): - if zoom < MIN_MAP_ZOOM: - return None - x = int(x) - y = int(y) - num = (x+y)%4 - mapmode = "w2.69" - url = "http://mt%(num)d.google.com/mt?n=404&v=%(mapmode)s&zoom=%(zoom)d&x=%(x)d&y=%(y)d" % vars() - return fetch(url) - -def fetch_relief_img(x, y, zoom): - if zoom < MIN_RELIEF_ZOOM: - return None - x = int(x) - y = int(y) - num = (x+y)%4 - mapmode = "w2p.71" - url = "http://mt%(num)d.google.com/mt?n=404&v=%(mapmode)s&zoom=%(zoom)d&x=%(x)d&y=%(y)d" % vars() - return fetch(url) - -def fetch_overlay_img(x, y, zoom): - if zoom < MIN_OVERLAY_ZOOM: - return None - x = int(x) - y = int(y) - num = (x+y)%4 - mapmode = "w2t.69" - url = "http://mt%(num)d.google.com/mt?n&v=%(mapmode)s&zoom=%(zoom)d&x=%(x)d&y=%(y)d" % vars() - return fetch(url) - -def get_image_number(lon, lat, zoom): - import math - from math import pi - - def deg2rad(a): - return a * pi/180. - - def frac(x): - return x - math.floor(x) - - def h(lat): - lat = deg2rad(lat) - # value determined by fitting original google maps - # output to mercator map formula - a = 0.0795775 - # mercator projection formula - return a * math.log((1. + math.sin(lat)) / (1. - math.sin(lat))) - - t = (2**(17-zoom)) - off = (2**(16-zoom)) - - lat = h(-lat) - lon = (lon / 360.) - - x = lon * t + off - y = lat * t + off - - xx = int(x) - yy = int(y) - - px = frac(x) * 256 - py = frac(y) * 256 - - return (xx, yy, x, y, px, py) - -def get_satellite(lon, lat, zoom): - if zoom < MIN_SATELLITE_ZOOM: - return None - img_num = get_image_number(lon, lat, zoom) - return fetch_satellite_img(img_num[0], img_num[1], zoom) - -def get_map(lon, lat, zoom): - if zoom < MIN_MAP_ZOOM: - return None - img_num = get_image_number(lon, lat, zoom) - return fetch_map_img(img_num[0], img_num[1], zoom) - -def get_relief(lon, lat, zoom): - if zoom < MIN_RELIEF_ZOOM: - return None - img_num = get_image_number(lon, lat, zoom) - return fetch_relief_img(img_num[0], img_num[1], zoom) - -def get_overlay(lon, lat, zoom): - if zoom < MIN_OVERLAY_ZOOM: - return None - img_num = get_image_number(lon, lat, zoom) - return fetch_overlay_img(img_num[0], img_num[1], zoom) |