code clean: pomodules
This commit is contained in:
parent
f3c5e73df1
commit
127f9dca7d
21
po_runner.py
21
po_runner.py
@ -7,8 +7,8 @@ from qgis._core import QgsVectorLayer, QgsProject, QgsLayerTreeLayer, QgsPalLaye
|
||||
from .pegelonline_dockwidget import PegelonlineDockWidget
|
||||
from .pomodules.po_history import PoHistory
|
||||
from .pomodules.po_stations import PoStations
|
||||
from .pomodules.po_stations_qgs import PoQgsStations
|
||||
from .pomodules.po_waterlevels_qgs import PoQgsCurrentW
|
||||
from .pomodules.po_stations_qgs import PoStationsQgs
|
||||
from .pomodules.po_waterlevels_qgs import PoWaterlevelsQgs
|
||||
|
||||
INFIX = ", ' - ', "
|
||||
|
||||
@ -16,17 +16,18 @@ INFIX = ", ' - ', "
|
||||
# noinspection PyMethodMayBeStatic
|
||||
class PoRunner(object):
|
||||
|
||||
def __init__(self, ui: PegelonlineDockWidget, iface):
|
||||
self.ui: PegelonlineDockWidget = ui
|
||||
def __init__(self, ui, iface):
|
||||
self.ui = ui
|
||||
self.iface = iface
|
||||
self.local_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
# Layer Variablen
|
||||
# Layer
|
||||
self.stations = None
|
||||
self.waterlevels = None
|
||||
self.lines = None
|
||||
self.areas = None
|
||||
|
||||
# ui Signale verbinden
|
||||
self.connect_basemap_signals()
|
||||
self.connect_stations_signals()
|
||||
self.connect_waterlevels_signals()
|
||||
@ -54,7 +55,7 @@ class PoRunner(object):
|
||||
|
||||
# zum LayerTree hinzufügen
|
||||
layer_tree = self.iface.layerTreeCanvasBridge().rootGroup()
|
||||
layer_tree.insertChildNode(-1, QgsLayerTreeLayer(basemap))
|
||||
layer_tree.insertChildNode(-1, QgsLayerTreeLayer(basemap)) # am unteren Ende anhängen → liegt somit unter stations/waterlevels
|
||||
|
||||
return basemap
|
||||
|
||||
@ -114,7 +115,7 @@ class PoRunner(object):
|
||||
print("cbStationsVisibleToggled: %s" % (visible,))
|
||||
|
||||
if self.stations is None and visible:
|
||||
reader = PoQgsStations()
|
||||
reader = PoStationsQgs()
|
||||
features = reader.getStationsFeatures()
|
||||
self.stations = self._layerFromReader(reader.fields, reader.crs, features, "Stationen")
|
||||
self._layerAdd(self.stations, "styles/label_stations.qml", self.disconnectStations)
|
||||
@ -192,8 +193,8 @@ class PoRunner(object):
|
||||
print("cbWaterlevelsVisibleToggled: %s" % (visible,))
|
||||
|
||||
if self.waterlevels is None and visible:
|
||||
reader = PoQgsCurrentW()
|
||||
features = reader.getCurrentWFeatures()
|
||||
reader = PoWaterlevelsQgs()
|
||||
features = reader.getWaterlevelsFeatures()
|
||||
self.waterlevels = self._layerFromReader(reader.fields, reader.crs, features, "Wasserstandinformationen")
|
||||
self._layerAdd(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels)
|
||||
|
||||
@ -314,7 +315,7 @@ class PoRunner(object):
|
||||
|
||||
# zum LayerTree hinzufügen
|
||||
layer_tree = self.iface.layerTreeCanvasBridge().rootGroup()
|
||||
layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer))
|
||||
layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer)) # am oberen Ende anhängen → liegt somit über basemap
|
||||
|
||||
def _layerUpdateLabeling(self, layer, fields):
|
||||
labeling = QgsVectorLayerSimpleLabeling(QgsPalLayerSettings())
|
||||
|
||||
@ -10,12 +10,12 @@ class PoHistory(UrlReader):
|
||||
super().__init__(poBaseURL + 'stations/%s/W/measurements.png?start=P%dD' % (quote(station), days))
|
||||
|
||||
def download(self):
|
||||
print("download: Getting data...")
|
||||
print("download: Lade Bild herunter...")
|
||||
|
||||
image_data = self.getDataResponse()
|
||||
if image_data is None or len(image_data) == 0:
|
||||
print("download: Fehler: Keine Daten erhalten")
|
||||
return None
|
||||
|
||||
print("download: Complete")
|
||||
print("download: Vollständig")
|
||||
return image_data
|
||||
|
||||
@ -8,7 +8,7 @@ class PoStations(UrlReader):
|
||||
super().__init__(poBaseURL + 'stations.json')
|
||||
|
||||
def getStations(self):
|
||||
print("getStations: Getting data...")
|
||||
print("getStations: Lade Stationen herunter...")
|
||||
|
||||
stations_json = self.getJsonResponse()
|
||||
if stations_json is None or len(stations_json) == 0:
|
||||
@ -37,5 +37,6 @@ class PoStations(UrlReader):
|
||||
}
|
||||
)
|
||||
|
||||
print("getStations: %d / %d Stationen überführt" % (len(stations), len(stations_json)))
|
||||
print("getStations: %d Stationen erhalten" % (len(stations),))
|
||||
|
||||
return stations
|
||||
|
||||
@ -5,7 +5,7 @@ from qgis.core import QgsFields, QgsFeature, QgsField
|
||||
from .po_stations import PoStations
|
||||
|
||||
|
||||
class PoQgsStations(PoStations):
|
||||
class PoStationsQgs(PoStations):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
@ -28,7 +28,7 @@ class PoQgsStations(PoStations):
|
||||
stations = self.getStations()
|
||||
|
||||
if stations is None or len(stations) == 0:
|
||||
print("getStations: Fehler: Keine Stationen erhalten")
|
||||
print("getStationsFeatures: Fehler: Keine Stationen erhalten")
|
||||
return None
|
||||
|
||||
for station in stations:
|
||||
@ -40,6 +40,7 @@ class PoQgsStations(PoStations):
|
||||
return features
|
||||
|
||||
def _getFeatureForStation(self, station) -> None | QgsFeature:
|
||||
# noinspection DuplicatedCode
|
||||
if station['geometry']['longitude'] is None or station['geometry']['latitude'] is None:
|
||||
print("_getFeatureForStation: WARN: Station hat fehlende Koordinaten: %s" % (station['attributes']['shortname'],))
|
||||
return None
|
||||
|
||||
@ -2,32 +2,26 @@ from . import poBaseURL
|
||||
from .urlreader import UrlReader
|
||||
|
||||
|
||||
class PoCurrentW(UrlReader):
|
||||
class PoWaterlevels(UrlReader):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(poBaseURL + 'stations.json?timeseries=W&includeTimeseries=true&includeCurrentMeasurement=true')
|
||||
|
||||
def getCurrentW(self):
|
||||
print("getCurrentW: Getting data...")
|
||||
def getWaterlevels(self):
|
||||
print("getWaterlevels: Lade Pegelstände herunter...")
|
||||
|
||||
stations_json = self.getJsonResponse()
|
||||
if stations_json is None or len(stations_json) == 0:
|
||||
print("getCurrentW: FEHLER: Keine Stationen erhalten")
|
||||
print("getWaterlevels: FEHLER: Keine Pegelstände erhalten")
|
||||
return None
|
||||
|
||||
print("getCurrentW: %d Stationen erhalten" % (len(stations_json),))
|
||||
|
||||
stations = []
|
||||
for station_json in stations_json:
|
||||
if 'longitude' not in station_json or 'latitude' not in station_json:
|
||||
print("getCurrentW: WARN: Station hat fehlende Koordinaten: %s" % (station_json['longname'],))
|
||||
continue
|
||||
|
||||
stations.append(
|
||||
{
|
||||
'geometry': {
|
||||
'longitude': station_json['longitude'],
|
||||
'latitude': station_json['latitude'],
|
||||
'longitude': station_json['longitude'] if 'longitude' in station_json else None,
|
||||
'latitude': station_json['latitude'] if 'latitude' in station_json else None,
|
||||
},
|
||||
'attributes': {
|
||||
'uuid': station_json['uuid'],
|
||||
@ -42,5 +36,6 @@ class PoCurrentW(UrlReader):
|
||||
}
|
||||
)
|
||||
|
||||
print("getCurrentW: %d / %d Stationen überführt" % (len(stations), len(stations_json)))
|
||||
print("getWaterlevels: %d Pegelstände erhalten" % (len(stations),))
|
||||
|
||||
return stations
|
||||
|
||||
@ -2,18 +2,18 @@ from PyQt5.QtCore import QVariant
|
||||
from qgis._core import QgsCoordinateReferenceSystem, QgsGeometry, QgsPointXY
|
||||
from qgis.core import QgsFields, QgsFeature, QgsField
|
||||
|
||||
from .po_waterlevels import PoCurrentW
|
||||
from .po_waterlevels import PoWaterlevels
|
||||
|
||||
|
||||
class PoQgsCurrentW(PoCurrentW):
|
||||
class PoWaterlevelsQgs(PoWaterlevels):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.fields = None
|
||||
self.crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
|
||||
|
||||
def getCurrentWFeatures(self):
|
||||
print("getCurrentWFeatures: Erzeuge Features...")
|
||||
def getWaterlevelsFeatures(self):
|
||||
print("getWaterlevelsFeatures: Erzeuge Features...")
|
||||
|
||||
self.fields = QgsFields()
|
||||
self.fields.append(QgsField('shortname', QVariant.String))
|
||||
@ -25,19 +25,25 @@ class PoQgsCurrentW(PoCurrentW):
|
||||
self.fields.append(QgsField('stateNswHsw', QVariant.String))
|
||||
|
||||
features = []
|
||||
waterlevels = self.getCurrentW()
|
||||
waterlevels = self.getWaterlevels()
|
||||
if waterlevels is None or len(waterlevels) > 0:
|
||||
print("getCurrentW: Fehler: Keine Pegelstände erhalten")
|
||||
print("getWaterlevelsFeatures: Fehler: Keine Pegelstände erhalten")
|
||||
return None
|
||||
|
||||
for station in waterlevels:
|
||||
feature = self._getFeatureForStation(station)
|
||||
if feature is not None:
|
||||
features.append(feature)
|
||||
|
||||
print("getCurrentWFeatures: %d Features erzeugt" % (len(features),))
|
||||
print("getWaterlevelsFeatures: %d Features erzeugt" % (len(features),))
|
||||
return features
|
||||
|
||||
def _getFeatureForStation(self, station):
|
||||
# noinspection DuplicatedCode
|
||||
if station['geometry']['longitude'] is None or station['geometry']['latitude'] is None:
|
||||
print("_getFeatureForStation: WARN: Station hat fehlende Koordinaten: %s" % (station['attributes']['shortname'],))
|
||||
return None
|
||||
|
||||
feature = QgsFeature(self.fields)
|
||||
|
||||
longitude = station['geometry']['longitude']
|
||||
|
||||
@ -9,6 +9,10 @@ from urllib.request import Request, urlopen
|
||||
class UrlReader(object):
|
||||
|
||||
def __init__(self, _url):
|
||||
"""
|
||||
Erzeugt einen neuen UrlReader für gegebene url
|
||||
:param _url: zu öffnende URL
|
||||
"""
|
||||
self.url = _url
|
||||
|
||||
def openUrl(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user