Pegelonline/pomodules/poqgsstations.py

51 lines
2.0 KiB
Python

from PyQt5.QtCore import QVariant
from qgis._core import QgsCoordinateReferenceSystem, QgsGeometry, QgsPointXY
from qgis.core import QgsFields, QgsFeature, QgsField
from .postations import PoStations
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))
self.fields.append(QgsField('shortname', QVariant.String))
self.fields.append(QgsField('longname', QVariant.String))
self.fields.append(QgsField('km', QVariant.Double))
self.fields.append(QgsField('agency', QVariant.String))
self.fields.append(QgsField('water', QVariant.String))
features = []
for station in self.getStations():
feature = self._getFeatureForStation(station)
features.append(feature)
print("getStationsFeatures: %d Features erzeugt" % (len(features),))
return features
def _getFeatureForStation(self, station) -> QgsFeature:
feature = QgsFeature(self.fields)
longitude = station['geometry']['longitude']
latitude = station['geometry']['latitude']
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude)))
feature.setAttribute('uuid', station['attributes']['uuid'])
feature.setAttribute('number', station['attributes']['number'])
feature.setAttribute('shortname', station['attributes']['shortname'])
feature.setAttribute('longname', station['attributes']['longname'])
feature.setAttribute('km', station['attributes']['km'])
feature.setAttribute('agency', station['attributes']['agency'])
feature.setAttribute('water', station['attributes']['water'])
return feature