FIX: Attribute wurde nicht direkt angezeigt

This commit is contained in:
Patrick Haßel 2025-09-27 11:58:03 +02:00
parent fb740f4895
commit 1d1aeb68cd
3 changed files with 20 additions and 16 deletions

View File

@ -31,13 +31,15 @@ class PoRunner(object):
def loadStations(self): def loadStations(self):
print("loadStations") print("loadStations")
reader = PoQgsStations() reader = PoQgsStations()
self.stations = self._layerFromReader(reader.fields, reader.crs, reader.getStationsFeatures(), "Stationen") features = reader.getStationsFeatures()
self.stations = self._layerFromReader(reader.fields, reader.crs, features, "Stationen")
self._layerShow(self.stations, "styles/label_stations.qml", self.disconnectStations) self._layerShow(self.stations, "styles/label_stations.qml", self.disconnectStations)
def loadWaterlevels(self): def loadWaterlevels(self):
print("loadWaterlevels") print("loadWaterlevels")
reader = PoQgsCurrentW() reader = PoQgsCurrentW()
self.waterlevels = self._layerFromReader(reader.fields, reader.crs, reader.getCurrentWFeatures(), "Wasserstandinformationen") features = reader.getCurrentWFeatures()
self.waterlevels = self._layerFromReader(reader.fields, reader.crs, features, "Wasserstandinformationen")
self._layerShow(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels) self._layerShow(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels)
def _layerFromReader(self, fields, crs, features, title) -> None | QgsVectorLayer: def _layerFromReader(self, fields, crs, features, title) -> None | QgsVectorLayer:
@ -49,13 +51,15 @@ class PoRunner(object):
print("layer_path: " + layer_path) print("layer_path: " + layer_path)
layer = QgsVectorLayer(layer_path, title, "memory") layer = QgsVectorLayer(layer_path, title, "memory")
layer.updateFields()
layer.updateExtents()
layer.commitChanges()
provider = layer.dataProvider() provider = layer.dataProvider()
provider.addAttributes(fields) provider.addAttributes(fields)
layer.updateFields()
provider.addFeatures(features) provider.addFeatures(features)
layer.updateExtents()
layer.commitChanges()
if layer.isValid(): if layer.isValid():
return layer return layer

View File

@ -9,17 +9,18 @@ class PoQgsCurrentW(PoCurrentW):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.fields = None
self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId) self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
def getCurrentWFeatures(self):
print("getCurrentWFeatures: Erzeuge Features...")
self.fields = QgsFields() self.fields = QgsFields()
self.fields.append(QgsField('timestamp', QVariant.DateTime)) self.fields.append(QgsField('timestamp', QVariant.DateTime))
self.fields.append(QgsField('value', QVariant.Double)) self.fields.append(QgsField('value', QVariant.Double))
self.fields.append(QgsField('stateMnwMhw', QVariant.String)) self.fields.append(QgsField('stateMnwMhw', QVariant.String))
self.fields.append(QgsField('stateNswHsw', QVariant.String)) self.fields.append(QgsField('stateNswHsw', QVariant.String))
def getCurrentWFeatures(self):
print("getCurrentWFeatures: Erzeuge Features...")
features = [] features = []
for station in self.getCurrentW(): for station in self.getCurrentW():
feature = self._getFeatureForStation(station) feature = self._getFeatureForStation(station)
@ -29,13 +30,12 @@ class PoQgsCurrentW(PoCurrentW):
return features return features
def _getFeatureForStation(self, station): def _getFeatureForStation(self, station):
feature = QgsFeature() feature = QgsFeature(self.fields)
longitude = station['geometry']['longitude'] longitude = station['geometry']['longitude']
latitude = station['geometry']['latitude'] latitude = station['geometry']['latitude']
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude))) feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude)))
feature.setFields(self.fields)
feature.setAttribute('timestamp', station['attributes']['timestamp']) feature.setAttribute('timestamp', station['attributes']['timestamp'])
feature.setAttribute('value', station['attributes']['value']) feature.setAttribute('value', station['attributes']['value'])
feature.setAttribute('stateMnwMhw', station['attributes']['stateMnwMhw']) feature.setAttribute('stateMnwMhw', station['attributes']['stateMnwMhw'])

View File

@ -9,8 +9,12 @@ class PoQgsStations(PoStations):
def __init__(self): def __init__(self):
PoStations.__init__(self) PoStations.__init__(self)
self.fields = None
self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId) self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
def getStationsFeatures(self):
print("getStationsFeatures: Erzeuge Features...")
self.fields = QgsFields() self.fields = QgsFields()
self.fields.append(QgsField('uuid', QVariant.String)) self.fields.append(QgsField('uuid', QVariant.String))
self.fields.append(QgsField('number', QVariant.Int)) self.fields.append(QgsField('number', QVariant.Int))
@ -20,9 +24,6 @@ class PoQgsStations(PoStations):
self.fields.append(QgsField('agency', QVariant.String)) self.fields.append(QgsField('agency', QVariant.String))
self.fields.append(QgsField('water', QVariant.String)) self.fields.append(QgsField('water', QVariant.String))
def getStationsFeatures(self):
print("getStationsFeatures: Erzeuge Features...")
features = [] features = []
for station in self.getStations(): for station in self.getStations():
feature = self._getFeatureForStation(station) feature = self._getFeatureForStation(station)
@ -32,13 +33,12 @@ class PoQgsStations(PoStations):
return features return features
def _getFeatureForStation(self, station) -> QgsFeature: def _getFeatureForStation(self, station) -> QgsFeature:
feature = QgsFeature() feature = QgsFeature(self.fields)
longitude = station['geometry']['longitude'] longitude = station['geometry']['longitude']
latitude = station['geometry']['latitude'] latitude = station['geometry']['latitude']
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude))) feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude)))
feature.setFields(self.fields)
feature.setAttribute('uuid', station['attributes']['uuid']) feature.setAttribute('uuid', station['attributes']['uuid'])
feature.setAttribute('number', station['attributes']['number']) feature.setAttribute('number', station['attributes']['number'])
feature.setAttribute('shortname', station['attributes']['shortname']) feature.setAttribute('shortname', station['attributes']['shortname'])