attributes: unit, 'km', water

This commit is contained in:
Patrick Haßel 2025-09-27 16:58:24 +02:00
parent 100149eb08
commit 844cc90bc2
6 changed files with 57 additions and 42 deletions

View File

@ -1,2 +1,3 @@
Beim hinzufügen von Features fehlte das layer.updateFields()
Beim hinzufügen von Features fehlte wurde versucht eine viel zu große Pegelonline 'number' in einen Int zu stecken. War schwierig zu entdecken => provider.errors()
Bild wird beim "Neu laden" doppelt heruntergeladen

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>288</width>
<width>301</width>
<height>660</height>
</rect>
</property>
@ -43,16 +43,16 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QCheckBox" name="cbWaterlevelsName">
<widget class="QCheckBox" name="cbWaterlevelsNumber">
<property name="text">
<string>Name</string>
<string>Nummer</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbWaterlevelsNumber">
<widget class="QCheckBox" name="cbWaterlevelsName">
<property name="text">
<string>Nummer</string>
<string>Name</string>
</property>
</widget>
</item>
@ -64,9 +64,9 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbWaterlevelsTimestamp">
<widget class="QCheckBox" name="cbWaterlevelsWater">
<property name="text">
<string>Zeitstempel</string>
<string>Gewässername</string>
</property>
</widget>
</item>
@ -74,6 +74,13 @@
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QCheckBox" name="cbWaterlevelsTimestamp">
<property name="text">
<string>Zeitstempel</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbWaterlevelsValue">
<property name="text">
@ -147,13 +154,6 @@
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QCheckBox" name="cbStationsName">
<property name="text">
<string>Stationsname</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbStationsNumber">
<property name="text">
@ -162,9 +162,16 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbStationsWater">
<widget class="QCheckBox" name="cbStationsName">
<property name="text">
<string>Gewässername</string>
<string>Name</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbStationsAgency">
<property name="text">
<string>Behörde</string>
</property>
</widget>
</item>
@ -173,9 +180,9 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QCheckBox" name="cbStationsAgency">
<widget class="QCheckBox" name="cbStationsWater">
<property name="text">
<string>Behörde</string>
<string>Gewässername</string>
</property>
</widget>
</item>

View File

@ -9,8 +9,6 @@ from .pomodules.po_stations import PoStations
from .pomodules.po_stations_qgs import PoStationsQgs
from .pomodules.po_waterlevels_qgs import PoWaterlevelsQgs
INFIX = ", ' - ', "
# noinspection PyMethodMayBeStatic
class PoRunner(object):
@ -160,16 +158,16 @@ class PoRunner(object):
return
fields = []
if self.ui.cbStationsName.isChecked():
fields.append("shortname")
if self.ui.cbStationsNumber.isChecked():
fields.append("number")
fields.append('\'#\', "number"')
if self.ui.cbStationsName.isChecked():
fields.append('"shortname"')
if self.ui.cbStationsAgency.isChecked():
fields.append("agency")
if self.ui.cbStationsKm.isChecked():
fields.append("km")
fields.append('"agency"')
if self.ui.cbStationsWater.isChecked():
fields.append("water")
fields.append('"water"')
if self.ui.cbStationsKm.isChecked():
fields.append('"km", \' km\'') # 2 Teile anhängen: km, " km"
self._layer_update_labels(self.stations, fields)
@ -186,6 +184,7 @@ class PoRunner(object):
self.ui.cbWaterlevelsValue.toggled.connect(self._cbWaterlevelsValue_toggled)
self.ui.cbWaterlevelsMean.toggled.connect(self._cbWaterlevelsMean_toggled)
self.ui.cbWaterlevelsAbsolute.toggled.connect(self._cbWaterlevelsAbsolute_toggled)
self.ui.cbWaterlevelsWater.toggled.connect(self._cbWaterlevelsWater_toggled)
def _cbWaterlevelsVisible_toggled(self):
visible = self.ui.cbWaterlevelsVisible.isChecked()
@ -236,6 +235,11 @@ class PoRunner(object):
print("_cbWaterlevelsAbsolute_toggled: %s" % (checked,))
self._waterlevels_update_labels()
def _cbWaterlevelsWater_toggled(self):
checked = self.ui.cbWaterlevelsWater.isChecked()
print("_cbWaterlevelsWater_toggled: %s" % (checked,))
self._waterlevels_update_labels()
def waterlevels_disconnect(self):
print("waterlevels_disconnect")
self.waterlevels = None
@ -248,20 +252,22 @@ class PoRunner(object):
return
fields = []
if self.ui.cbWaterlevelsName.isChecked():
fields.append("shortname")
if self.ui.cbWaterlevelsNumber.isChecked():
fields.append("number")
fields.append('\'#\', "number"')
if self.ui.cbWaterlevelsName.isChecked():
fields.append('"shortname"')
if self.ui.cbWaterlevelsAgency.isChecked():
fields.append("agency")
fields.append('"agency"')
if self.ui.cbWaterlevelsWater.isChecked():
fields.append('"water"')
if self.ui.cbWaterlevelsTimestamp.isChecked():
fields.append("timestamp")
fields.append('"timestamp"')
if self.ui.cbWaterlevelsValue.isChecked():
fields.append("value")
fields.append('"value", \' \', "unit"') # 3 Teile anhängen: value, leerzeichen, unit
if self.ui.cbWaterlevelsMean.isChecked():
fields.append("stateMnwMhw")
fields.append('\'MnwMhw=\', "stateMnwMhw"')
if self.ui.cbWaterlevelsAbsolute.isChecked():
fields.append("stateNswHsw")
fields.append('\'NswHsw=\', "stateNswHsw"')
self._layer_update_labels(self.waterlevels, fields)
# layers ------------------------------------------------------------------
@ -321,11 +327,8 @@ class PoRunner(object):
print("_layer_update_labels")
labeling = QgsVectorLayerSimpleLabeling(QgsPalLayerSettings())
# Anführungszeichen um Feldnamen anbringen
fields_quoted = ['"%s"' % (field,) for field in fields]
# Feldnamen zu einem Minus-getrennten String zusammenbauen
expression = ", ' - ', ".join(fields_quoted)
expression = ", ' / ', ".join(fields)
settings = labeling.settings()
settings.fieldName = "concat(" + expression + ")"

View File

@ -15,8 +15,6 @@ class PoStations(UrlReader):
print("getStations: Keine Stationen erhalten")
return None
print("getStations: %d Stationen erhalten" % (len(stations_json),))
stations = []
for station_json in stations_json:
stations.append(

View File

@ -28,10 +28,12 @@ class PoWaterlevels(UrlReader):
'shortname': station_json['shortname'],
'number': station_json['number'],
'agency': station_json['agency'],
'unit': station_json['timeseries'][0]['unit'],
'timestamp': station_json['timeseries'][0]['currentMeasurement']['timestamp'],
'value': station_json['timeseries'][0]['currentMeasurement']['value'],
'stateMnwMhw': station_json['timeseries'][0]['currentMeasurement']['stateMnwMhw'],
'stateNswHsw': station_json['timeseries'][0]['currentMeasurement']['stateNswHsw'],
'water': station_json['water']['longname'],
},
}
)

View File

@ -21,8 +21,10 @@ class PoWaterlevelsQgs(PoWaterlevels):
self.fields.append(QgsField('agency', QVariant.String))
self.fields.append(QgsField('timestamp', QVariant.DateTime))
self.fields.append(QgsField('value', QVariant.Double))
self.fields.append(QgsField('unit', QVariant.String))
self.fields.append(QgsField('stateMnwMhw', QVariant.String))
self.fields.append(QgsField('stateNswHsw', QVariant.String))
self.fields.append(QgsField('water', QVariant.String))
features = []
waterlevels = self.getWaterlevels()
@ -55,7 +57,9 @@ class PoWaterlevelsQgs(PoWaterlevels):
feature.setAttribute('agency', station['attributes']['agency'])
feature.setAttribute('timestamp', station['attributes']['timestamp'])
feature.setAttribute('value', station['attributes']['value'])
feature.setAttribute('unit', station['attributes']['unit'])
feature.setAttribute('stateMnwMhw', station['attributes']['stateMnwMhw'])
feature.setAttribute('stateNswHsw', station['attributes']['stateNswHsw'])
feature.setAttribute('water', station['attributes']['water'])
return feature