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
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
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
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)
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)