def guess_time_position_in_str(cls, str_with_time): try: m = re.match(cls.TIME_REGEX, str_with_time) return m.start(2), m.end(2) except Exception, e: info("Could not guess timestamp in raster filename. Cause {}".format(e)) return (0, 0)
def __del__(self): info("Cleaning up interpolated layer {}".format(self.layer.name())) QgsMapLayerRegistry.instance().removeMapLayer(self.memLayer.id()) try: del self.memLayer except: pass
def guessTimePositionInStr(cls, str_with_time): try: m = re.match(cls.TIME_REGEX, str_with_time) return m.start(2), m.end(2) except Exception, e: info("Could not guess timestamp in raster filename. Cause {}". format(e)) return (0, 0)
def load(self): """Load the plugin""" # Order matters! self.timeLayerManager = TimeLayerManager(self.iface) self.guiControl = TimeManagerGuiControl(self.iface, self.timeLayerManager) self.initGuiConnections() self.initLayerManagerConnections() self.initQGISConnections() self.restoreDefaults() info("Hello world!")
def __init__(self, settings, iface=None): TimeLayer.__init__(self, settings.layer, settings.isEnabled) try: self.layer = settings.layer self.iface = iface self.minValue, self.maxValue = None, None self.fromTimeAttribute = settings.startTimeAttribute self.toTimeAttribute = settings.endTimeAttribute if settings.endTimeAttribute != "" \ else self.fromTimeAttribute self.accumulate = settings.accumulate self.originalSubsetString = settings.subsetStr self.currSubsetString = self.originalSubsetString self.setSubsetString(self.originalSubsetString) self.geometriesCount = settings.geometriesCount self.type = time_util.DateTypes.determine_type( self.getRawMinValue()) if self.type not in time_util.DateTypes.QDateTypes: # call to throw an exception early if no format can be found self.findValidValues(self.fromTimeAttribute, settings.timeFormat) if self.fromTimeAttribute != self.toTimeAttribute: self.findValidValues(self.toTimeAttribute, settings.timeFormat) self.timeFormat = self.determine_format(self.getRawMinValue(), settings.timeFormat) if self.toTimeAttribute != self.fromTimeAttribute: type2 = time_util.DateTypes.determine_type( self.getRawMaxValue()) tf2 = self.determine_format(self.getRawMaxValue(), settings.timeFormat) if self.type != type2 or self.timeFormat != tf2: raise InvalidTimeLayerError( "Invalid time layer: To and From attributes must have " "exact same format") self.offset = int(settings.offset) assert (self.timeFormat != time_util.PENDING) extents = self.getTimeExtents() info("Layer extents" + str(extents)) except ValueError: # ValueErrors appear for virtual layers, see https://github.com/anitagraser/TimeManager/issues/219 raise InvalidTimeLayerError( 'This layer type is currently not supported.') except Exception, e: error(traceback.format_exc(e)) raise InvalidTimeLayerError(e)
def __init__(self, settings, iface): TimeVectorLayer.__init__(self, settings, iface=iface) try: info( "Trying to create time interpolated layer with interpolation mode: {}" .format(settings.interpolationMode)) try: import numpy as np except: raise Exception("Need to have numpy installed") if self.layer.geometryType() != QGis.Point: raise Exception("Want point geometry!") self.idAttribute = settings.idAttribute self.memLayer = self.getMemLayer() # adjust memLayer to have same crs and same color as original layer, only half transparent self.memLayer.setCrs(self.layer.crs()) qgs.setLayerColor(self.memLayer, qgs.getLayerColor(self.layer)) qgs.setLayerSize(self.memLayer, qgs.getLayerSize(self.layer)) #qgs.setLayerTransparency(self.memLayer, 0.5) qgs.refreshSymbols(self.iface, self.memLayer) QgsMapLayerRegistry.instance().addMapLayer(self.memLayer) provider = self.getProvider() self.fromTimeAttributeIndex = provider.fieldNameIndex( self.fromTimeAttribute) self.toTimeAttributeIndex = provider.fieldNameIndex( self.toTimeAttribute) if self.hasIdAttribute(): self.idAttributeIndex = provider.fieldNameIndex( self.idAttribute) self.uniqueIdValues = set( provider.uniqueValues(self.idAttributeIndex)) else: self.uniqueIdValues = set([DEFAULT_ID]) self.mode = settings.interpolationMode self.fromInterpolator = ifactory.get_interpolator_from_text( self.mode) self.fromInterpolator.load(self) self.n = 0 info("Interpolated layer {} created successfully!".format( self.layer.name())) except Exception, e: raise InvalidTimeLayerError("Traceback:" + traceback.format_exc(e))
def __init__(self, iface): """initialize the plugin""" global control try: control except NameError: try: overrideLocale = bool(QSettings().value("locale/overrideFlag", False)) if not overrideLocale: lang = QLocale.system().name().split("_")[0] else: lang = QSettings().value("locale/userLocale", "").split("_")[0] except: lang = "en" # could not get locale, OSX may have this bug info("Plugin language loaded: {}".format(lang)) self.change_i18n(lang) control = TimeManagerControl(iface)
def __init__(self, iface): """initialize the plugin""" global control try: control except NameError: try: overrideLocale = bool(QSettings().value( "locale/overrideFlag", False)) if not overrideLocale: lang = QLocale.system().name().split("_")[0] else: lang = QSettings().value("locale/userLocale", "").split("_")[0] except: lang = "en" # could not get locale, OSX may have this bug info("Plugin language loaded: {}".format(lang)) self.change_i18n(lang) control = TimeManagerControl(iface)
def __init__(self, settings, iface): TimeVectorLayer.__init__(self, settings, iface=iface) try: info("Trying to create time interpolated layer with interpolation mode: {}".format( settings.interpolationMode)) try: import numpy as np except: raise Exception("Need to have numpy installed") if self.layer.geometryType() != QGis.Point: raise Exception("Want point geometry!") self.idAttribute = settings.idAttribute self.memLayer = self.getMemLayer() # adjust memLayer to have same crs and same color as original layer, only half transparent self.memLayer.setCrs(self.layer.crs()) qgs.setLayerColor(self.memLayer, qgs.getLayerColor(self.layer)) qgs.setLayerSize(self.memLayer, qgs.getLayerSize(self.layer)) #qgs.setLayerTransparency(self.memLayer, 0.5) qgs.refreshSymbols(self.iface, self.memLayer) QgsMapLayerRegistry.instance().addMapLayer(self.memLayer) provider = self.getProvider() self.fromTimeAttributeIndex = provider.fieldNameIndex(self.fromTimeAttribute) self.toTimeAttributeIndex = provider.fieldNameIndex(self.toTimeAttribute) if self.hasIdAttribute(): self.idAttributeIndex = provider.fieldNameIndex(self.idAttribute) self.uniqueIdValues = set(provider.uniqueValues(self.idAttributeIndex)) else: self.uniqueIdValues = set([DEFAULT_ID]) self.mode = settings.interpolationMode self.fromInterpolator = ifactory.get_interpolator_from_text(self.mode) self.fromInterpolator.load(self) self.n = 0 info("Interpolated layer {} created successfully!".format(self.layer.name())) except Exception, e: raise InvalidTimeLayerError("Traceback:" + traceback.format_exc(e))
def __init__(self, settings, iface=None): TimeLayer.__init__(self, settings.layer, settings.isEnabled) try: self.layer = settings.layer self.iface = iface self.minValue, self.maxValue = None, None self.fromTimeAttribute = settings.startTimeAttribute self.toTimeAttribute = settings.endTimeAttribute if settings.endTimeAttribute != ""\ else self.fromTimeAttribute self.accumulate = settings.accumulate self.originalSubsetString = settings.subsetStr self.currSubsetString = self.originalSubsetString self.setSubsetString(self.originalSubsetString) self.geometriesCount = settings.geometriesCount self.type = DateTypes.determine_type(self.getRawMinValue()) if self.type not in DateTypes.QDateTypes: # call to throw an exception early if no format can be found self.findValidValues(self.fromTimeAttribute, settings.timeFormat) if self.fromTimeAttribute != self.toTimeAttribute: self.findValidValues(self.toTimeAttribute, settings.timeFormat) self.timeFormat = self.determine_format(self.getRawMinValue(), settings.timeFormat) if self.toTimeAttribute != self.fromTimeAttribute: type2 = DateTypes.determine_type(self.getRawMaxValue()) tf2 = self.determine_format(self.getRawMaxValue(), settings.timeFormat) if self.type != type2 or self.timeFormat != tf2: raise InvalidTimeLayerError( "Invalid time layer: To and From attributes must have " "exact same format") self.offset = int(settings.offset) assert (self.timeFormat != time_util.PENDING) extents = self.getTimeExtents() info("Layer extents" + str(extents)) except Exception, e: error(traceback.format_exc(e)) raise InvalidTimeLayerError(e)