Exemplo n.º 1
0
def dap_msg2ds(msg):
    """
    @Brief Convert dap encoded message content in a dictionary to a pydap dataset object.
    """
    dataset = DDSParser(msg.dds).parse()
    
    dataset = DASParser(msg.das, dataset).parse()
    
    if msg.dods:
        # This block is from open_dods in client.py
        dataset.data = DapUnpacker(base64.b64decode(msg.dods), dataset).getvalue()
        #dataset.data = DapUnpacker(msg.dods, dataset).getvalue()
        
    return dataset
Exemplo n.º 2
0
def dap_msg2ds(msg):
    """
    @Brief Convert dap encoded message content in a dictionary to a pydap dataset object.
    """
    dataset = DDSParser(msg.dds).parse()

    dataset = DASParser(msg.das, dataset).parse()

    if msg.dods:
        # This block is from open_dods in client.py
        dataset.data = DapUnpacker(base64.b64decode(msg.dods),
                                   dataset).getvalue()
        #dataset.data = DapUnpacker(msg.dods, dataset).getvalue()

    return dataset
Exemplo n.º 3
0
def open_dods(url, get_metadata=False):
    """
    Download data from a DODS response and build a dataset.

    This function is useful to open "raw" URLs.

    """
    resp, data = request(url)
    dds, xdrdata = data.split('\nData:\n', 1)
    dataset = DDSParser(dds).parse()
    dataset.data = DapUnpacker(xdrdata, dataset).getvalue()

    if get_metadata:
        scheme, netloc, path, query, fragment = urlsplit(url)
        dasurl = urlunsplit(
                (scheme, netloc, path[:-5] + '.das', query, fragment))
        resp, das = request(dasurl)
        dataset = DASParser(das, dataset).parse()

    return dataset
Exemplo n.º 4
0
    def __iter__(self):
        scheme, netloc, path, query, fragment = urlsplit(self.url)
        id_ = ','.join('%s.%s' % (self.id, child) for child in self.children) or self.id
        url = urlunsplit((
                scheme, netloc, path + '.dods',
                quote(id_) + hyperslab(self._slice) + '&' + query,
                fragment))

        resp, data = request(url)
        dds, xdrdata = data.split('\nData:\n', 1)
        dataset = DDSParser(dds).parse()
        dataset.data = DapUnpacker(xdrdata, dataset).getvalue()
        dataset._set_id()

        # Strip any projections from the request id.
        id_ = re.sub('\[.*?\]', '', self.id)
        # And return the proper data.
        for var in walk(dataset):
            if var.id == id_:
                data = var.data
                if isinstance(var, SequenceType):
                    order = [var.keys().index(k) for k in self.children]
                    data = reorder(order, data, var._nesting_level)
                return iter(data)
Exemplo n.º 5
0
    def __iter__(self):
        scheme, netloc, path, query, fragment = urlsplit(self.url)
        id_ = ','.join('%s.%s' % (self.id, child)
                       for child in self.children) or self.id
        url = urlunsplit(
            (scheme, netloc, path + '.dods',
             id_ + hyperslab(self._slice) + '&' + query, fragment))

        resp, data = request(url)
        dds, xdrdata = data.split('\nData:\n', 1)
        dataset = DDSParser(dds).parse()
        dataset.data = DapUnpacker(xdrdata, dataset).getvalue()
        dataset._set_id()

        # Strip any projections from the request id.
        id_ = re.sub('\[.*?\]', '', self.id)
        # And return the proper data.
        for var in walk(dataset):
            if var.id == id_:
                data = var.data
                if isinstance(var, SequenceType):
                    order = [var.keys().index(k) for k in self.children]
                    data = reorder(order, data, var._nesting_level)
                return iter(data)