from qgis._core import QgsFeature, QgsGeometry, QgsPointXY class PoStation(object): def __init__(self, json): """ Nimmt JSON-Daten einer Pegelonline-Station entgegen und füllt die entsprechenden Felder :param json: Json-Daten einer Station :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.number = json['number'] self.shortname = json['shortname'] self.longname = json['longname'] self.km = json['km'] if 'km' in json else None self.agency = json['agency'] self.water = json['water']['longname'] def new_feature(self, fields) -> None | QgsFeature: """ Erzeugt ein QgsFeature mit Attributen dieser Station 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("PoStation::new_feature: WARN: Station hat fehlende Koordinaten: %s" % (self.shortname,)) return None feature = QgsFeature(fields) feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(self.longitude, self.latitude))) feature.setAttribute('uuid', self.uuid) feature.setAttribute('number', self.number) feature.setAttribute('shortname', self.shortname) feature.setAttribute('longname', self.longname) feature.setAttribute('km', self.km) feature.setAttribute('agency', self.agency) feature.setAttribute('water', self.water) return feature