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