El algoritmo para calcular la imagen (x, y, zoom) que le corresponde a la posicion se encuentra en:
A pesar de mostrar otras posibles fuentes de imagenes, nosotros utilizaremos la de arcgis. Existe una serie de opciones, que puede verlas en: http://bcdcspatial.blogspot.cl/2012/01/onlineoffline-mapping-map-tiles-and.html
A pesar que el ejemplo de la pagina anterior dice World_Topo_Map, utilizaremos World_Imagery, las alternativas las puede ver en: http://services.arcgisonline.com/arcgis/rest/services
In [1]:
# Codigo sacado de la pagina de slippy map.
import math
def deg2num(lat_deg, lon_deg, zoom):
lat_rad = math.radians(lat_deg)
n = 2.0 ** zoom
xtile = int((lon_deg + 180.0) / 360.0 * n)
ytile = int((1.0 - math.log(math.tan(lat_rad) + (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n)
return (xtile, ytile)
Ubicamos por google maps, el estadio Santiago Bernabeu
In [2]:
lat_bernabeu = 40.453062
lon_bernabeu = -3.688369
zoom = 16
x,y = deg2num(lat_bernabeu, lon_bernabeu, zoom)
In [3]:
print(x,y)
In [4]:
url = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/"
url += str(zoom)
url += "/"
url += str(y)
url += "/"
url += str(x)
url += ".png"
In [5]:
url
Out[5]:
In [6]:
import urllib.request
In [7]:
pagina = urllib.request.urlopen(url)
In [8]:
datos = pagina.read()
In [9]:
archivo = open("bernabeu.png", "wb")
In [10]:
archivo.write(datos)
Out[10]:
In [11]:
archivo.close()
Al final se puede ver que el archivo "bernabeu.png", es la imagen satelital de ese estadio
In [12]:
import PIL.Image
In [13]:
foto_entrada = PIL.Image.open("bernabeu.png")
In [15]:
w,h =foto_entrada.size
In [16]:
print(w,h)
In [17]:
foto_entrada.getpixel((0,0))
Out[17]:
In [18]:
foto_salida = PIL.Image.new("RGB", (512,256))
In [24]:
for i in range(w):
for j in range(h):
r,g,b = foto_entrada.getpixel((i,j))
prom = (r+g+b)//3
foto_salida.putpixel((i,j),(r,g,b))
foto_salida.putpixel((256+j,i),(prom,prom,prom))
In [25]:
foto_salida.save("seccion3.png")
In [26]:
import IPython.display
In [27]:
foto = IPython.display.Image("seccion3.png")
In [28]:
IPython.display.display(foto)
In [29]:
foto_entrada
Out[29]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: