from PyQt5.QtCore import QVariant from qgis._core import QgsCoordinateReferenceSystem from qgis.core import QgsFields, QgsField from .po_waterlevel_reader import PoWaterlevelReader class PoWaterlevelReaderQgs(PoWaterlevelReader): def __init__(self): """ Initialisiert die Super-Klasse und das Koordinaten-System der Features """ super().__init__() self.fields = None self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId) def get_features(self): """ Erzeugt Features aus allen Waterlevels von super.get_waterlevels() oder None im Fehlerfall :return: list[QgsFeature] | None """ print("PoWaterlevelReaderQgs::get_features: Erzeuge Features...") self.fields = QgsFields() self.fields.append(QgsField('shortname', QVariant.String)) self.fields.append(QgsField('number', QVariant.LongLong)) self.fields.append(QgsField('agency', QVariant.String)) self.fields.append(QgsField('timestamp', QVariant.DateTime)) self.fields.append(QgsField('value', QVariant.Double)) self.fields.append(QgsField('unit', QVariant.String)) self.fields.append(QgsField('mean', QVariant.String)) self.fields.append(QgsField('absolute', QVariant.String)) self.fields.append(QgsField('water', QVariant.String)) features = [] waterlevels = self.get_waterlevels() if waterlevels is None or len(waterlevels) == 0: # Kein Waterlevel erhalten → Abbruch print("PoWaterlevelReaderQgs::get_features: Fehler: Keine Pegelstände erhalten") return None for waterlevel in waterlevels: feature = waterlevel.new_feature(self.fields) if feature is not None: # Feature-Erzeugung erfolgreich, füge zu Liste hinzu features.append(feature) print("PoWaterlevelReaderQgs::get_features: %d Features erzeugt" % (len(features),)) return features