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)
예제 #2
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 __del__(self):
     info("Cleaning up interpolated layer {}".format(self.layer.name()))
     QgsMapLayerRegistry.instance().removeMapLayer(self.memLayer.id())
     try:
         del self.memLayer
     except:
         pass
예제 #4
0
 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)
예제 #5
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!")
예제 #6
0
    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))
예제 #8
0
 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)
예제 #9
0
 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))
예제 #11
0
    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)