Esempio n. 1
0
 def getTimeExtents(self):
     """Get layer's temporal extent in datetime format
      using the fields and the format defined in the layer"""
     start_str, end_str = self.getMinMaxValues()
     startTime = str_to_datetime(start_str,  self.getTimeFormat())
     endTime = str_to_datetime(end_str,  self.getTimeFormat())
     # apply offset
     startTime += timedelta(seconds=self.offset)
     endTime += timedelta(seconds=self.offset)
     return startTime, endTime
Esempio n. 2
0
 def getTimeExtents(self):
     """Get layer's temporal extent in datetime format
      using the fields and the format defined in the layer"""
     start_str, end_str = self.getMinMaxValues()
     startTime = str_to_datetime(start_str, self.getTimeFormat())
     endTime = str_to_datetime(end_str, self.getTimeFormat())
     # apply offset
     startTime += timedelta(seconds=self.offset)
     endTime += timedelta(seconds=self.offset)
     return startTime, endTime
Esempio n. 3
0
 def getTimeExtents( self ):
     """Get layer's temporal extent using the fields and the format defined somewhere else!"""
     startStr = self.fromTimeAttribute
     endStr = self.toTimeAttribute
     startTime = str_to_datetime(startStr, self.getTimeFormat())
     endTime = str_to_datetime(endStr, self.getTimeFormat())
     # apply offset
     startTime += timedelta(seconds=self.offset)
     endTime += timedelta(seconds=self.offset)
     return (startTime,endTime)
Esempio n. 4
0
    def setTimeRestriction(self, timePosition, timeFrame):
        """Constructs the query, including the original subset"""
        if not self.timeEnabled:
            self.deleteTimeRestriction()
            return

        startTime = timePosition + timedelta(seconds=self.offset)
        endTime = timePosition + timeFrame + timedelta(seconds=self.offset)
        layerStartTime = str_to_datetime(self.fromTimeAttribute, self.getTimeFormat())
        layerEndTime = str_to_datetime(self.toTimeAttribute, self.getTimeFormat())
        self.hideOrShowLayer(startTime, endTime, layerStartTime, layerEndTime)
Esempio n. 5
0
 def findValidValues(self, fieldName, fmt):
     uniques = self.getUniques(fieldName)
     at_least_one_valid = False
     last_exc = None
     for v in uniques:
         try: 
             str_to_datetime(v,fmt)
             at_least_one_valid = True
             break
         except Exception,e:
             last_exc = e
             continue
Esempio n. 6
0
 def findValidValues(self, fieldName, fmt):
     uniques = self.getUniques(fieldName)
     at_least_one_valid = False
     last_exc = None
     for v in uniques:
         try:
             time_util.str_to_datetime(v, fmt)
             at_least_one_valid = True
             break
         except Exception, e:
             last_exc = e
             continue
Esempio n. 7
0
    def setTimeRestriction(self, timePosition, timeFrame):
        """Constructs the query, including the original subset"""
        if not self.timeEnabled:
            self.deleteTimeRestriction()
            return

        startTime = timePosition + timedelta(seconds=self.offset)
        endTime = timePosition + timeFrame + timedelta(seconds=self.offset)
        layerStartTime = str_to_datetime(self.fromTimeAttribute,
                                         self.getTimeFormat())
        layerEndTime = str_to_datetime(self.toTimeAttribute,
                                       self.getTimeFormat())
        self.hideOrShowLayer(startTime, endTime, layerStartTime, layerEndTime)
Esempio n. 8
0
 def restoreTimePositionFromSettings(self, value):
     """Restore the time position from settings"""
     if value:
         dt = time_util.str_to_datetime(
             value,
             time_util.DEFAULT_FORMAT)  # this also works for integer values
         self.getTimeLayerManager().setCurrentTimePosition(dt)
Esempio n. 9
0
    def setTimeRestriction(self,timePosition,timeFrame):
        """Constructs the query, including the original subset"""
        if not self.timeEnabled:
            self.deleteTimeRestriction()
            return

        startTime = timePosition + timedelta(seconds=self.offset)
        endTime = timePosition + timeFrame + timedelta(seconds=self.offset)
        if str_to_datetime(self.fromTimeAttribute, self.getTimeFormat()) < endTime and str_to_datetime(self.toTimeAttribute, self.getTimeFormat()) >= startTime:
            # if the timestamp is within the extent --> show the raster
            self.layer.renderer().setOpacity(1) # no transparency  
        else: # hide the raster
            self.layer.renderer().setOpacity(0)   # total transparency
Esempio n. 10
0
 def restoreFromSaveString(self, saveString):
     """restore settings from loaded project file"""
     tdfmt = time_util.SAVE_STRING_FORMAT
     if saveString:
         saveString = str(saveString).split(conf.SAVE_DELIMITER)
         try:
             timeExtents = (time_util.str_to_datetime(saveString[0], tdfmt),
                            time_util.str_to_datetime(saveString[1], tdfmt))
         except:
             try:
                 # Try converting without the fractional seconds for
                 # backward compatibility.
                 tdfmt = time_util.DEFAULT_FORMAT
                 timeExtents = (time_util.str_to_datetime(
                     saveString[0],
                     tdfmt), time_util.str_to_datetime(
                         saveString[1], tdfmt))
             except:
                 # avoid error message for projects without
                 # time-managed layers
                 return
         self.setProjectTimeExtents(timeExtents)
         pos = time_util.str_to_datetime(saveString[2], tdfmt)
         self.setCurrentTimePosition(pos)
Esempio n. 11
0
    def getMinMaxValues(self):
        """Returns str"""
        if self.minValue is None or self.maxValue is None:  # if not already computed
            provider = self.layer.dataProvider()
            fmt = self.getTimeFormat()
            fromTimeAttributeIndex = provider.fieldNameIndex(
                self.fromTimeAttribute)
            toTimeAttributeIndex = provider.fieldNameIndex(
                self.toTimeAttribute)
            if query_builder.can_compare_lexicographically(fmt):
                minValue = provider.minimumValue(fromTimeAttributeIndex)
                maxValue = provider.maximumValue(toTimeAttributeIndex)
            else:
                # need to find min max by looking at all the unique values
                # QGIS doesn't get sorting right

                unique_vals = provider.uniqueValues(fromTimeAttributeIndex)
                unique_vals = map(lambda x: str_to_datetime(x, fmt),
                                  unique_vals)
                minValue = datetime_to_str(min(unique_vals), fmt)
                if fromTimeAttributeIndex == toTimeAttributeIndex:
                    maxValue = datetime_to_str(max(unique_vals), fmt)
                else:
                    unique_vals = provider.uniqueValues(toTimeAttributeIndex)
                    unique_vals = map(lambda x: str_to_datetime(x, fmt),
                                      unique_vals)
                    maxValue = datetime_to_str(max(unique_vals), fmt)

            if type(minValue) in [QtCore.QDate, QtCore.QDateTime]:
                minValue = datetime_to_str(QDateTime_to_datetime(minValue),
                                           self.getTimeFormat())
                maxValue = datetime_to_str(QDateTime_to_datetime(maxValue),
                                           self.getTimeFormat())
            self.minValue = minValue
            self.maxValue = maxValue
        return self.minValue, self.maxValue