52 lines
2.1 KiB
Python
52 lines
2.1 KiB
Python
from qgis._core import QgsFeature, QgsGeometry, QgsPointXY
|
|
|
|
|
|
class PoWaterlevel(object):
|
|
|
|
def __init__(self, json):
|
|
"""
|
|
Nimmt JSON-Daten eines Pegelonline-Waterlevels entgegen und füllt die entsprechenden Felder
|
|
:param json: Json-Daten einer Waterlevel
|
|
:type json: dict
|
|
"""
|
|
self.longitude = json['longitude'] if 'longitude' in json else None
|
|
self.latitude = json['latitude'] if 'latitude' in json else None
|
|
self.uuid = json['uuid']
|
|
self.shortname = json['shortname']
|
|
self.number = json['number']
|
|
self.agency = json['agency']
|
|
self.unit = json['timeseries'][0]['unit']
|
|
self.timestamp = json['timeseries'][0]['currentMeasurement']['timestamp']
|
|
self.value = json['timeseries'][0]['currentMeasurement']['value']
|
|
self.mean = json['timeseries'][0]['currentMeasurement']['stateMnwMhw']
|
|
self.absolute = json['timeseries'][0]['currentMeasurement']['stateNswHsw']
|
|
self.water = json['water']['longname']
|
|
|
|
def new_feature(self, fields):
|
|
"""
|
|
Erzeugt ein QgsFeature mit Attributen dieses Waterlevels oder None im Fehlerfall
|
|
:param fields: QgsField-Liste um das Feature zu befüllen
|
|
:type fields: list[QgsField]
|
|
:return: None | QgsFeature
|
|
"""
|
|
if self.longitude is None or self.latitude is None:
|
|
# Keine Koordinaten → Abbruch
|
|
print("PoWaterlevel::new_feature: WARN: Waterlevel hat fehlende Koordinaten: %s" % (self.shortname,))
|
|
return None
|
|
|
|
feature = QgsFeature(fields)
|
|
|
|
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(self.longitude, self.latitude)))
|
|
|
|
feature.setAttribute('shortname', self.shortname)
|
|
feature.setAttribute('number', self.number)
|
|
feature.setAttribute('agency', self.agency)
|
|
feature.setAttribute('timestamp', self.timestamp)
|
|
feature.setAttribute('value', self.value)
|
|
feature.setAttribute('unit', self.unit)
|
|
feature.setAttribute('mean', self.mean)
|
|
feature.setAttribute('absolute', self.absolute)
|
|
feature.setAttribute('water', self.water)
|
|
|
|
return feature
|