diff --git a/po_runner.py b/po_runner.py index c76f459..a5f575f 100644 --- a/po_runner.py +++ b/po_runner.py @@ -31,13 +31,15 @@ class PoRunner(object): def loadStations(self): print("loadStations") 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) def loadWaterlevels(self): print("loadWaterlevels") 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) def _layerFromReader(self, fields, crs, features, title) -> None | QgsVectorLayer: @@ -49,13 +51,15 @@ class PoRunner(object): print("layer_path: " + layer_path) layer = QgsVectorLayer(layer_path, title, "memory") - layer.updateFields() - layer.updateExtents() - layer.commitChanges() - provider = layer.dataProvider() + provider.addAttributes(fields) + layer.updateFields() + provider.addFeatures(features) + layer.updateExtents() + + layer.commitChanges() if layer.isValid(): return layer diff --git a/pomodules/poqgscurrentw.py b/pomodules/poqgscurrentw.py index deacde0..ba9279a 100644 --- a/pomodules/poqgscurrentw.py +++ b/pomodules/poqgscurrentw.py @@ -9,17 +9,18 @@ class PoQgsCurrentW(PoCurrentW): def __init__(self): super().__init__() + self.fields = None self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId) + def getCurrentWFeatures(self): + print("getCurrentWFeatures: Erzeuge Features...") + self.fields = QgsFields() self.fields.append(QgsField('timestamp', QVariant.DateTime)) self.fields.append(QgsField('value', QVariant.Double)) self.fields.append(QgsField('stateMnwMhw', QVariant.String)) self.fields.append(QgsField('stateNswHsw', QVariant.String)) - def getCurrentWFeatures(self): - print("getCurrentWFeatures: Erzeuge Features...") - features = [] for station in self.getCurrentW(): feature = self._getFeatureForStation(station) @@ -29,13 +30,12 @@ class PoQgsCurrentW(PoCurrentW): return features def _getFeatureForStation(self, station): - feature = QgsFeature() + feature = QgsFeature(self.fields) longitude = station['geometry']['longitude'] latitude = station['geometry']['latitude'] feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude))) - feature.setFields(self.fields) feature.setAttribute('timestamp', station['attributes']['timestamp']) feature.setAttribute('value', station['attributes']['value']) feature.setAttribute('stateMnwMhw', station['attributes']['stateMnwMhw']) diff --git a/pomodules/poqgsstations.py b/pomodules/poqgsstations.py index 271c179..4b549f2 100644 --- a/pomodules/poqgsstations.py +++ b/pomodules/poqgsstations.py @@ -9,8 +9,12 @@ class PoQgsStations(PoStations): def __init__(self): PoStations.__init__(self) + self.fields = None self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId) + def getStationsFeatures(self): + print("getStationsFeatures: Erzeuge Features...") + self.fields = QgsFields() self.fields.append(QgsField('uuid', QVariant.String)) 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('water', QVariant.String)) - def getStationsFeatures(self): - print("getStationsFeatures: Erzeuge Features...") - features = [] for station in self.getStations(): feature = self._getFeatureForStation(station) @@ -32,13 +33,12 @@ class PoQgsStations(PoStations): return features def _getFeatureForStation(self, station) -> QgsFeature: - feature = QgsFeature() + feature = QgsFeature(self.fields) longitude = station['geometry']['longitude'] latitude = station['geometry']['latitude'] feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude))) - feature.setFields(self.fields) feature.setAttribute('uuid', station['attributes']['uuid']) feature.setAttribute('number', station['attributes']['number']) feature.setAttribute('shortname', station['attributes']['shortname'])