Example #1
0
    def download(self):
        
        params = self._getParams()
        log.debug("params = %s" % (params,))
        
        endpoint = params.get('ENDPOINT')
        
        args = {}
        args['identifier'] = params['LAYER']
        args['bbox'] = tuple(params.get('BBOX').split(','))
        args['format'] = params['FORMAT']
        args['crs'] = params['CRS']

        if (params.get('SINGLE_TIME',"").upper() == 'TRUE'):
            args['time'] = [params.get('TIME')]
        else:
            args['time'] = [params.get('TIME'), params.get('TIME_END')]
        
        wcs, layers = self._getWCSObj(endpoint)
        
        log.debug("wcs.url = %s" % (wcs.url,))
        
        assert args['identifier'] in layers
        
        log.debug("args = %s" % (args,))
        
        oldProxy = proxyFix(endpoint)
        try:
            output = wcs.getCoverage(**args)
        except Exception, e:
            log.exception("Exception occurred")
            raise
Example #2
0
    def _getWCSMetadata(self, wcs, layer):
        
        oldProxy = proxyFix(wcs.url)
        try:
            layerMetadata = wcs[layer]
            bboxLimits = ','.join([str(x) for x in layerMetadata.boundingBoxWGS84])
            timepositions = layerMetadata.timepositions
            supportedFormats = layerMetadata.supportedFormats  
            supportedCRS = layerMetadata.supportedCRS          

        finally:
            resetProxy(oldProxy)
        
        return layerMetadata, bboxLimits, timepositions, supportedFormats, supportedCRS
Example #3
0
def _getWcsData(params):
    """Performs WCS retrieval for a set of parameters.
    @param params: parameters to use in WCS r equest
    @return tuple (WCS response data, content header information)
    """
    params = _getParams(params)
    log.debug("params = %s" % (params,))

    endpoint = params.get("ENDPOINT")

    # Set OWSlib WCS parameters.
    args = {}
    layerId = params["LAYERS"].partition(",")[0]
    args["identifier"] = layerId
    # Get the bounding box values (W, S, E, N).
    args["bbox"] = tuple(params.get("BBOX").split(","))
    args["format"] = params["FORMAT"]
    args["crs"] = params["CRS"]
    args["time"] = params.get("TIME")

    wcs, layers = _getWCSObj(endpoint)

    log.debug("wcs.url = %s" % (wcs.url,))

    if layerId not in layers:
        raise Exception("Layer %s is not available for WCS download" % layerId)

    # Find the dimension names for the layer, and if there are any request parameters with the same
    # name as a dimension, use them as a GetCoverage argument.
    layer = [x for x in wcs.items() if x[0] == layerId][0][1]
    for dimensionName in [a.name.upper() for a in layer.axisDescriptions]:
        log.debug("Checking for value for dimension %s" % dimensionName)
        if dimensionName in params:
            args[dimensionName] = params[dimensionName]
            log.debug("Found value %s" % params[dimensionName])

    log.debug("args = %s" % (args,))

    # Perform the GetCoverage request.
    oldProxy = proxyFix(endpoint)
    try:
        output = wcs.getCoverage(**args)
    except Exception, e:
        log.exception("Exception occurred")
        raise
Example #4
0
 def _getWCSObj(self, endpoint):
     oldProxy = proxyFix(endpoint)
     try:
         
         log.debug("wcs endpoint = %s" % (endpoint,))
         
         getCapabilitiesEndpoint = parseEndpointString(endpoint, 
                     {'Service':'WCS', 'Request':'GetCapabilities'})
         
         log.debug("wcs endpoint = %s" % (getCapabilitiesEndpoint,))
         #requires OWSLib with cookie support
         wcs=WebCoverageService(getCapabilitiesEndpoint, version='1.0.0',cookies= request.headers.get('Cookie', ''))
         
         layers = [x[0] for x in wcs.items()]
     finally:
         resetProxy(oldProxy)
     
     return wcs, layers
Example #5
0
def _getWCSObj(endpoint):
    """Contructs a WCS object for an endpoint.
    @param endpoint: endpoint URL
    @return WCS object
    """
    oldProxy = proxyFix(endpoint)
    try:

        log.debug("wcs endpoint = %s" % (endpoint,))

        getCapabilitiesEndpoint = parseEndpointString(endpoint, {"Service": "WCS", "Request": "GetCapabilities"})

        log.debug("wcs endpoint = %s" % (getCapabilitiesEndpoint,))
        # requires OWSLib with cookie support
        wcs = WebCoverageService(getCapabilitiesEndpoint, version="1.0.0", cookies=request.headers.get("Cookie", ""))

        layers = [x[0] for x in wcs.items()]
    finally:
        resetProxy(oldProxy)

    return wcs, layers