def setTimeRestriction(self, timePosition, timeFrame):
        TimeVectorLayer.setTimeRestriction(self, timePosition, timeFrame)

        start_epoch = datetime_to_epoch(
            self.getStartTime(timePosition, timeFrame))
        end_epoch = datetime_to_epoch(self.getEndTime(timePosition, timeFrame))

        #info("setTimeRestriction Called {} times".format(self.n))
        #info("size of layer at {}:{}".format(start_epoch,self.memLayer.featureCount(),))
        geoms = self.getInterpolatedGeometries(start_epoch, end_epoch)
        #Add the geometries as features
        self._clearMemoryLayer()

        features = []
        for i, geom in enumerate(geoms):
            feature = QgsFeature(id=start_epoch + i)
            feature.setGeometry(QgsGeometry.fromPoint(geom))
            #feature.setAttributes([start_epoch+i])
            features.append(feature)  # if no attributes, it will fail
            self.n = self.n + 1

        #info("add {}features:".format(len(features)))
        res = self.memLayer.dataProvider().addFeatures(features)
        assert (res)
        self.memLayer.triggerRepaint()
    def setTimeRestriction(self, timePosition, timeFrame):
        TimeVectorLayer.setTimeRestriction(self, timePosition, timeFrame)

        start_epoch = datetime_to_epoch(self.getStartTime(timePosition, timeFrame))
        end_epoch =  datetime_to_epoch(self.getEndTime(timePosition, timeFrame))

        #info("setTimeRestriction Called {} times".format(self.n))
        #info("size of layer at {}:{}".format(start_epoch,self.memLayer.featureCount(),))

        geoms = self.getInterpolatedGeometries(start_epoch, end_epoch)
        #Add the geometries as features
        self._clearMemoryLayer()

        self.previous_ids = set()

        features = []
        for i,geom in enumerate(geoms):

            feature = QgsFeature(id = start_epoch+i)
            feature.setGeometry(QgsGeometry.fromPoint(geom))
            #feature.setAttributes([start_epoch+i])
            features.append(feature) # if no attributes, it will fail
            self.previous_ids.add(feature.id())
            self.n = self.n + 1

        #info("add {}features:".format(len(features)))
        res = self.memLayer.dataProvider().addFeatures(features)
        assert(res)
        self.memLayer.triggerRepaint()
    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):
        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))
Exemplo n.º 5
0
 def deleteTimeRestriction(self):
     TimeVectorLayer.deleteTimeRestriction(self)
     self._clearMemoryLayer()
 def deleteTimeRestriction(self):
     TimeVectorLayer.deleteTimeRestriction(self)
     self._clearMemoryLayer()