import csv
import os.path
from owslib.wms import WebMapService

wms = [WebMapService('http://fototeca.cnig.es/wms/fototeca.dll', version='1.1.1'),
        WebMapService('http://fototeca.cnig.es/wms/fototeca.dll', version='1.1.1'),
        WebMapService('http://www.ign.es/wms-inspire/pnoa-ma', version='1.1.1')]


f = open('poblados.csv','rU')
reader = csv.reader(f)

rownum = 0
for row in reader:
    if rownum > 0:
        name = row[3]               # nombre del embalse
        year = row[6]
        id = row[2]
        if year:
            name = "".join([c for c in name if c.isalpha() or c.isdigit() or c==' ']).rstrip()
            nombre = id + ".jpeg"
            folders = ['1945/', '1956/', '2014/']
            vuelos = ["americano_serie_a", "americano_1956_57", "OI.OrthoimageCoverage"]
            styles = ['SGD_StereoModel::ShowAnaglyphicOff|SGD_StereoModel::OrthoOnTheFlyOn',
                    'SGD_StereoModel::ShowAnaglyphicOff|SGD_StereoModel::OrthoOnTheFlyOn',
                    'Default']
            for i in range(3):

                # Verificamos que el archivo no exista para no repetir descarga

                if not os.path.isfile(folders[i]+nombre):
                    print "Descargando " + folders[i] + name

                    x = int(float(row[0]))
                    y = int(float(row[1]))

                    # dimensiones del rectangulo representado

                    mlado = 1500
                    minx = x - mlado
                    maxx = x + mlado
                    miny = y - mlado
                    maxy = y + mlado

                    # Pedimos la imagen al servidor WMS, 2048x2048 pixels
                    response = wms[i].getmap(
                        layers=[vuelos[i]],
                        srs='EPSG:25830',
                        styles=[styles[i]],
                        bbox=(minx,miny,maxx,maxy),
                        size=(2048,2048),
                        format='image/jpeg',
                        transparent=True,
                        queryable=True,
                        exceptions='application/vnd.ogc.se_inimage')

                    # Almacenamos localmente la imagen con el nombre del embalse y anyo

                    out = open(folders[i] + nombre, 'wb')
                    out.write(response.read())
                    out.close()
                else:
                    print nombre + " ya existe"

    rownum += 1

f.close()