Exemple #1
0
    def persistMeasurement(self, dt, depth, lat, lon, var, value):
        '''Call all of the create_ methods to properly persist this measurement in STOQS'''

        try:
            parm, _ = m.Parameter.objects.using(
                self.dbAlias).get_or_create(name=var)
        except Exception as e:
            print((
                "ERROR: *** Could not get_or_create name = '%s'.  See details below. ***\n"
                % var))
            print(e)
            traceback.print_exc(file=sys.stdout)
            print("Continuing on with processing messages...")
            ##sys.exit(-1)

        meas = self.createMeasurement(dt, depth, lat, lon)
        mp = m.MeasuredParameter(measurement=meas,
                                 parameter=parm,
                                 datavalue=str(value))
        try:
            mp.save(using=self.dbAlias)
        except IntegrityError as e:
            logger.error(
                "WARNING: Probably a duplicate measurement that could not be added to the DB.  Skipping it.\n"
            )
            logger.error(e)
        else:
            print(("saved %s = %f at %s, %f, %f, %f" %
                   (parm, value, dt, depth, lat, lon)))

        return
Exemple #2
0
    def persistMeasurement(self, dt, depth, lat, lon, var, value):
        '''Call all of the create_ methods to properly persist this measurement in STOQS'''

        try:
            (parm, created) = m.Parameter.objects.using(self.dbAlias).get_or_create(name = var)
        except Exception, e:
            print "ERROR: *** Could not get_or_create name = '%s'.  See details below. ***\n" % var
            print e
            traceback.print_exc(file = sys.stdout)
            print "Continuing on with processing messages..."
            ##sys.exit(-1)

        meas = self.createMeasurement(dt, depth, lat, lon)
        mp = m.MeasuredParameter(measurement = meas,
                    parameter = parm,
                    datavalue = str(value))
        try:
            mp.save(using=self.dbAlias)
        except IntegrityError, e:
            logger.error("WARNING: Probably a duplicate measurement that could not be added to the DB.  Skipping it.\n", var)
            logger.error(e)
        else:
            print "saved %s = %f at %s, %f, %f, %f" % (parm, value, dt, depth, lat, lon)

        return 

    def persistSample(self, dt, depth, lat, lon, var, value):
        '''Call all of the create_ methods to properly persist this sample in STOQS'''

        sample = self.createSample(dt, depth, lat, lon, value)
Exemple #3
0
    def load_measurement(self, lat, lon, depth, mtime, parmNameValues):
        '''
        Load the data values recorded for each loaction
        @parmNameValues is a list of 2-tuples of (ParameterName, Value) measured at the time and location specified by
        @lat decimal degrees
        @lon decimal degrees
        @mtime Python datetime.datetime object
        @depth in meters
        '''
        mt = None
        try:
            mt = self.createMeasurement(mtime=mtime,
                                        depth=depth,
                                        lat=lat,
                                        lon=lon)
            logger.info("measurement._state.db = %s", mt._state.db)

            if depth < self.mindepth:
                self.mindepth = depth
            if depth > self.maxdepth:
                self.maxdepth = depth
        except SkipRecord as e:
            logger.info(e)
        except Exception as e:
            logger.error(e)
            sys.exit(-1)
        else:
            logger.info(
                "longitude = %s, latitude = %s, mtime = %s, depth = %s", lon,
                lat, mtime, depth)

        for pn, value in parmNameValues:
            logger.info("pn = %s", pn)
            logger.info("parameter._state.db = %s",
                        self.getParameterByName(pn)._state.db)
            mp = m.MeasuredParameter(measurement=mt,
                                     parameter=self.getParameterByName(pn),
                                     datavalue=value)

            try:
                mp.save(using=self.dbAlias)

            except ParameterNotFound:
                logger.error("Unable to locate parameter for %s, skipping", pn)
                continue
            except Exception as e:
                logger.error('Exception %s. Skipping this record.', e)
                logger.error("Bad value (id=%(id)s) for %(pn)s = %(value)s", {
                    'pn': pn,
                    'value': value,
                    'id': mp.pk
                })
                continue
            else:
                self.loaded += 1
                logger.info(
                    "Inserted value (id=%(id)s) for %(pn)s = %(value)s", {
                        'pn': pn,
                        'value': value,
                        'id': mp.pk
                    })
                self.parmCount[pn] += 1
                if self.getParameterByName(pn) in self.parameterCount:
                    self.parameterCount[self.getParameterByName(pn)] += 1
                else:
                    self.parameterCount[self.getParameterByName(pn)] = 0
Exemple #4
0
                self.mindepth = depth
            if depth > self.maxdepth:
                self.maxdepth = depth
        except SkipRecord, e:
            logger.info(e)
        except Exception, e:
            logger.error(e)
            sys.exit(-1)
        else:
            logger.info("longitude = %s, latitude = %s, time = %s, depth = %s", lon, lat, time, depth)
            
        for pn,value in parmNameValues:
            logger.info("pn = %s", pn)
            logger.info("parameter._state.db = %s", self.getParameterByName(pn)._state.db)
            mp = m.MeasuredParameter(measurement = mt,
                                     parameter = self.getParameterByName(pn),
                                     datavalue = value) 
            
            try:
                mp.save(using=self.dbAlias)

            except ParameterNotFound:
                logger.error("Unable to locate parameter for %s, skipping", pn)
                continue
            except Exception, e:
                logger.error('Exception %s. Skipping this record.', e)
                logger.error("Bad value (id=%(id)s) for %(pn)s = %(value)s", {'pn': pn, 'value': value, 'id': mp.pk})
                continue
            else:
                self.loaded += 1
                logger.info("Inserted value (id=%(id)s) for %(pn)s = %(value)s", {'pn': pn, 'value': value, 'id': mp.pk})