Este script sirve para realizar peticiones a un servicio OGC-WCS para, dado un encuadre y una ‘coverage’ conocida, descargar su información a local en ficheros. Está realizado con python y utiliza la librería urllib2. Los ficheros raster generados, en Geotiff o AsciiGrid, pueden luego cargarse en cualquier programa GIS o manipularse con librerías estándar como gdal.
UtilidadesWCS.py
import os import time import urllib2 ''' Utilidad de extraccion de servicio WCS @author: VictorVelarde (victor.velarde@gmail.com) ''' class ServicioWCS(object): """ Utilidad para generar peticiones a un servicio OGC-WCS y guardar los resultados en disco """ ANCHURA_PETICION = 10000 #mismas unidades que el sistema de proyeccion SEGUNDOS_ESPERA_ENTRE_PETICIONES = 5 def __init__(self, url): ''' Constructor con url del servicio, p.ej: http://www.idee.es/wcs/IDEE-WCS-UTM30N/wcsServlet? ''' self.url = url def ExtraerFicheros(self, xmin, ymin, xmax, ymax, directorioSalida, formatoWCS): if(os.path.isdir(directorioSalida) == False): os.mkdir(directorioSalida) print 'Inicio de la extraccion' i = 1 for x in range(xmin, xmax, ServicioWCS.ANCHURA_PETICION): for y in range(ymin, ymax, ServicioWCS.ANCHURA_PETICION): url = ('%s?REQUEST=GetCoverage&SERVICE=WCS&VERSION=1.0.0&FORMAT=%s&COVERAGE=MDT25_peninsula_zip&BBOX=%f,%f,%f,%f&CRS=EPSG:23030&RESX=25&RESY=25' %(self.url, formatoWCS, x, y, x + ServicioWCS.ANCHURA_PETICION, y + ServicioWCS.ANCHURA_PETICION)) print url peticion = urllib2.Request(url) respuesta = urllib2.urlopen(peticion) extension = {FormatoWCS.ASCII_GRID : '.asc', FormatoWCS.GEOTIFF: '.tif'} fileHandle = open('%s/%03d%s' %(directorioSalida, i, extension[formatoWCS]), 'wb') fileHandle.write(respuesta.read()) fileHandle.close() time.sleep(ServicioWCS.SEGUNDOS_ESPERA_ENTRE_PETICIONES) i = i + 1 print 'Fin de la extraccion' class FormatoWCS: ASCII_GRID = 'AsciiGrid' GEOTIFF = 'Geotiff'
Y para ejecutarlo:
from UtilidadesWCS import ServicioWCS, FormatoWCS servicio = ServicioWCS("http://www.idee.es/wcs/IDEE-WCS-UTM30N/wcsServlet") servicio.ExtraerFicheros(333850.0, 4728100.0, 503850.0, 4888100.0, "extraccion", FormatoWCS.ASCII_GRID) servicio.ExtraerFicheros(333850.0, 4728100.0, 503850.0, 4888100.0, "extraccion", FormatoWCS.GEOTIFF)
Como alguno me los habéis pedido, aquí subo los ficheros por si alguien quiere probarlos: Megaupload
EDIT: Editado para añadir mejoras de WordPress al código fuente.