Pegelonline/po_modules/po_waterlevels_reader_qgs.py
2025-09-29 16:26:42 +02:00

51 lines
2.0 KiB
Python

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