Example #1
0
    def parse_constraints(self, environ):
        dataset = copy.deepcopy(self.dataset)

        projection, selection = parse_qs(environ.get('QUERY_STRING', ''))
        list_of_var = []
        if projection:
            for var in projection:
                var_name = var[len(var)-1][0]
                if var_name in list_of_var:
                    continue
                list_of_var.append(var_name)
                if var_name in ['lat', 'lon']:
                    if var_name == 'lon':
                        dataset[var_name] = BaseType(name=var_name,
                                                  data=self.lons,
                                                  shape=self.lons.shape,
                                                  dimensions=('lon',),
                                                  type=self.lons.dtype.char)
                    elif var_name == 'lat':
                        dataset[var_name] = BaseType(name=var_name,
                                                  data=self.lats,
                                                  shape=self.lats.shape,
                                                  dimensions=('lat',),
                                                  type=self.lats.dtype.char)
                else:
                    data = self.get_data_for_parameter(var_name, None)
                    dataset[var_name] = BaseType(name=var_name,
                                                 data=data,
                                                 shape=data.shape,
                                                 dimensions=('lat', 'lon'),
                                                 type=data.dtype.char)

        return constrain(dataset, environ.get('QUERY_STRING', ''))
Example #2
0
    def parse_constraints(self, environ):
        dataset = copy.deepcopy(self.dataset)

        projection, selection = parse_qs(environ.get('QUERY_STRING', ''))
        list_of_var = []
        if projection:
            for var in projection:
                var_name = var[len(var) - 1][0]
                if var_name in list_of_var:
                    continue
                list_of_var.append(var_name)
                if var_name in ['lat', 'lon']:
                    if var_name == 'lon':
                        dataset[var_name] = BaseType(name=var_name,
                                                     data=self.lons,
                                                     shape=self.lons.shape,
                                                     dimensions=('lon', ),
                                                     type=self.lons.dtype.char)
                    elif var_name == 'lat':
                        dataset[var_name] = BaseType(name=var_name,
                                                     data=self.lats,
                                                     shape=self.lats.shape,
                                                     dimensions=('lat', ),
                                                     type=self.lats.dtype.char)
                else:
                    data = self.get_data_for_parameter(var_name, None)
                    dataset[var_name] = BaseType(name=var_name,
                                                 data=data,
                                                 shape=data.shape,
                                                 dimensions=('lat', 'lon'),
                                                 type=data.dtype.char)

        return constrain(dataset, environ.get('QUERY_STRING', ''))
Example #3
0
    def parse_constraints(self, environ):
        """
        Parse the request.

        This method uses the magic ``constrain`` function, which handles
        arbitrary datasets/constraint expressions according to the DAP spec.

        """
        environ['x-wsgiorg.throw_errors'] = self.debug
        new_dataset = constrain(self.dataset, environ.get('QUERY_STRING', ''))
        if hasattr(self.dataset, 'close'): self.dataset.close()
        return new_dataset
Example #4
0
File: lib.py Project: OPENDAP/pydap
    def parse_constraints(self, environ):
        """
        Parse the request.

        This method uses the magic ``constrain`` function, which handles
        arbitrary datasets/constraint expressions according to the DAP spec.

        """
        environ['x-wsgiorg.throw_errors'] = self.debug
        new_dataset = constrain(self.dataset, environ.get('QUERY_STRING', ''))
        if hasattr(self.dataset, 'close'): self.dataset.close()
        return new_dataset
Example #5
0
    def parse_constraints(self, environ):
        try:
            f = fCNV(self.filepath)
        except:
            message = 'Unable to open file %s.' % self.filepath
            print self.filepath
            raise OpenFileError(message)

        # ====
        #s = StructureType(name='s')
        dataset = SequenceType(name=f.attributes['filename'],
                attributes=f.attributes)
        for k in f.keys():
            dataset[k] = BaseType(name=k, data=f[k], shape=f[k].shape,
                    type=f[k].dtype.char) #, attributes=f.attributes)
        # ====

        return constrain(dataset, environ.get('QUERY_STRING', ''))
Example #6
0
    def parse_constraints(self, environ):
        try:
            f = fCNV(self.filepath)
        except:
            message = 'Unable to open file %s.' % self.filepath
            print self.filepath
            raise OpenFileError(message)

        # ====
        #s = StructureType(name='s')
        dataset = SequenceType(name=f.attributes['filename'],
                               attributes=f.attributes)
        for k in f.keys():
            dataset[k] = BaseType(
                name=k, data=f[k], shape=f[k].shape,
                type=f[k].dtype.char)  #, attributes=f.attributes)
        # ====

        return constrain(dataset, environ.get('QUERY_STRING', ''))
                        dataset[seq_name][name] = BaseType(name=name, data=data, type=self.get_numpy_type(data), attributes=attrs)
                    if isinstance(pc.param_type,RecordType):
                        try:
                            result = []
                            for ddict in data:
                                d = ['_'.join([k,v]) for k,v in ddict.iteritems()]
                                result = result + d
                            result = np.asanyarray(result)
                        except Exception, e:
                            result = np.asanyarray(['None' for d in data])
                        ttype = self.get_numpy_type(result)
                        dataset[seq_name][name] = BaseType(name=name, data=result, type=ttype, attributes=attrs)
                except Exception, e:
                    log.exception('Problem reading cov %s %s', cov.name, e)
                    continue
        return constrain(dataset, environ.get('QUERY_STRING', ''))
    
    def get_numpy_type(self, data):
        result = data.dtype.char
        if self.is_basestring(data):
            result = 'S'
        elif self.is_float(data):
            result = 'd'
        elif self.is_int(data):
            result = 'i'
        elif result not in ('d', 'f', 'h', 'i','b','H','I','B','S'):
            raise TypeNotSupportedError()
        return result

    def is_basestring(self, data):
        for d in data: