diff --git a/plugin/.docker/Dockerfile b/plugin/.docker/Dockerfile new file mode 100644 index 0000000..fed32ed --- /dev/null +++ b/plugin/.docker/Dockerfile @@ -0,0 +1,22 @@ +ARG QGIS_TEST_VERSION=latest +FROM qgis/qgis:${QGIS_TEST_VERSION} + +# remove QGIS apt repo to avoid signing key issues +RUN add-apt-repository -r https://qgis.org/ubuntu && \ + add-apt-repository -r https://qgis.org/ubuntu-ltr + +RUN apt-get update && \ + apt-get -y install openjdk-8-jre curl locales postgresql-client python3-geoalchemy2 \ + && rm -rf /var/lib/apt/lists/* + +RUN printf '[postgres]\ndbname=postgres\nuser=postgres\n' >> /etc/postgresql-common/pg_service.conf +RUN printf '[pg_tww]\ndbname=tww\nuser=postgres\n' >> /etc/postgresql-common/pg_service.conf + +# Some defaults +ENV POSTGRES_PASSWORD=postgres +# otherwise psycopg2 cannot connect +ENV PGSERVICEFILE=/etc/postgresql-common/pg_service.conf +ENV PGSERVICE=pg_tww +ENV LANG=C.UTF-8 + +WORKDIR / diff --git a/plugin/.docker/run-docker-tests.sh b/plugin/.docker/run-docker-tests.sh new file mode 100644 index 0000000..e34af3b --- /dev/null +++ b/plugin/.docker/run-docker-tests.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +#*************************************************************************** +# ------------------- +# begin : 2017-08-24 +# git sha : :%H$ +# copyright : (C) 2017 by OPENGIS.ch +# email : info@opengis.ch +#*************************************************************************** +# +#*************************************************************************** +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU General Public License as published by * +#* the Free Software Foundation; either version 2 of the License, or * +#* (at your option) any later version. * +#* * +#*************************************************************************** + +set -e + +pushd /usr/src/plugin +DEFAULT_PARAMS='-v' +xvfb-run pytest-3 ${@:-`echo $DEFAULT_PARAMS`} +popd diff --git a/plugin/scripts/download-interlis-libs.sh b/plugin/scripts/download-interlis-libs.sh new file mode 100644 index 0000000..c2e482c --- /dev/null +++ b/plugin/scripts/download-interlis-libs.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +wget https://github.com/teksi/wastewater/archive/refs/tags/plugin-ili-libs-1.tar.gz +tar xvzf plugin-ili-libs-1.tar.gz --strip-components=1 diff --git a/plugin/scripts/package-pip-packages.sh b/plugin/scripts/package-pip-packages.sh new file mode 100644 index 0000000..bc60d18 --- /dev/null +++ b/plugin/scripts/package-pip-packages.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +LIBS_DIR="plugin/teksi_interlis_tool/libs" + +MODELBAKER_LIBRARY=("modelbaker" "1.6.0") + +PACKAGES=( + MODELBAKER_LIBRARY[@] +) + +#create lib folder +mkdir -p $LIBS_DIR + +for PACKAGE in ${PACKAGES[@]}; do + echo download and unpack ${!PACKAGE:0:1} with version ${!PACKAGE:1:1} + #create temp folder + mkdir -p temp + #download the wheel + pip download -v ${!PACKAGE:0:1}==${!PACKAGE:1:1} --only-binary :all: -d temp/ + #unpack all the wheels found (means including dependencies) + unzip -o "temp/*.whl" -d $LIBS_DIR + #remove temp folder + rm -r temp + #set write rights to group (because qgis-plugin-ci needs it) + chmod -R g+w $LIBS_DIR +done + +#create the __init__.py in libs folder +cd $LIBS_DIR +touch __init__.py +chmod g+w __init__.py diff --git a/plugin/scripts/run-tests.sh b/plugin/scripts/run-tests.sh new file mode 100644 index 0000000..f213559 --- /dev/null +++ b/plugin/scripts/run-tests.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Arguments are passed one to one to pytest +# +# Run all tests: +# ./scripts/run-tests.sh # Run all tests +# +# Run all test starting with test_array_ +# ./scripts/run-tests.sh -k test_array_ + +docker-compose run qgis /usr/src/plugin/.docker/run-docker-tests.sh $@ diff --git a/plugin/teksi_interlis_tool/__init__.py b/plugin/teksi_interlis_tool/__init__.py new file mode 100644 index 0000000..a777999 --- /dev/null +++ b/plugin/teksi_interlis_tool/__init__.py @@ -0,0 +1,29 @@ +# ----------------------------------------------------------- +# +# TEKSI INTERLIS Tool +# Copyright (C) 2024 TEKSI +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + + +def classFactory(iface): + from .teksi_interlis_tool_plugin import TeksiInterlisToolPlugin + + return TeksiInterlisToolPlugin(iface) diff --git a/plugin/teksi_interlis_tool/gui/__init__.py b/plugin/teksi_interlis_tool/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/gui/about_dialog.py b/plugin/teksi_interlis_tool/gui/about_dialog.py new file mode 100644 index 0000000..d123b7c --- /dev/null +++ b/plugin/teksi_interlis_tool/gui/about_dialog.py @@ -0,0 +1,62 @@ +# ----------------------------------------------------------- +# +# Profile +# Copyright (C) 2012 Patrice Verchere +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, print to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +import os + +from qgis.PyQt.QtCore import QSettings +from qgis.PyQt.QtGui import QPixmap +from qgis.PyQt.QtWidgets import QDialog + +from ..utils import get_ui_class +from ..utils.plugin_utils import plugin_root_path + +DIALOG_UI = get_ui_class("about_dialog.ui") + + +class AboutDialog(QDialog, DIALOG_UI): + def __init__(self, parent=None): + QDialog.__init__(self, parent) + self.setupUi(self) + + metadata_file_path = os.path.join( + os.path.abspath(os.path.join(os.path.dirname(__file__), "..")), + "metadata.txt", + ) + + ini_text = QSettings(metadata_file_path, QSettings.IniFormat) + version = ini_text.value("version") + name = ini_text.value("name") + description = "".join(ini_text.value("description")) + about = " ".join(ini_text.value("about")) + qgisMinimumVersion = ini_text.value("qgisMinimumVersion") + + self.setWindowTitle(f"{name} - {version}") + self.titleLabel.setText(self.windowTitle()) + self.descriptionLabel.setText(description) + self.aboutLabel.setText(about) + self.qgisMinimumVersionLabel.setText(qgisMinimumVersion) + + self.iconLabel.setPixmap( + QPixmap(os.path.join(plugin_root_path(), "icons/teksi-abwasser-logo.svg")) + ) diff --git a/plugin/teksi_interlis_tool/gui/forms.py b/plugin/teksi_interlis_tool/gui/forms.py new file mode 100644 index 0000000..bc7259c --- /dev/null +++ b/plugin/teksi_interlis_tool/gui/forms.py @@ -0,0 +1,26 @@ +import qgis +from qgis.core import QgsProject + +from ..tools.twwmaptooladdfeature import TwwMapToolDigitizeDrainageChannel + + +def geometryDigitized(fid, layer, tool): + layer.changeGeometry(fid, tool.geometry) + layer.triggerRepaint() + tool.deactivate() + + +def mapToolDeactivated(tool): + tool.deactivated.disconnect() + qgis.utils.plugins["teksi_interlis_tool"].iface.mapCanvas().unsetMapTool(tool) + tool.deleteLater() + + +def digitizeDrainageChannel(fid, layerid): + layer = QgsProject.instance().mapLayer(layerid) + layer.startEditing() + tool = TwwMapToolDigitizeDrainageChannel(qgis.utils.plugins["teksi_interlis_tool"].iface, layer) + qgis.utils.plugins["teksi_interlis_tool"].iface.mapCanvas().setMapTool(tool) + tool.geometryDigitized.connect(lambda: geometryDigitized(fid, layer, tool)) + # form.window().hide() + tool.deactivated.connect(lambda: mapToolDeactivated(tool)) diff --git a/plugin/teksi_interlis_tool/gui/twwsettingsdialog.py b/plugin/teksi_interlis_tool/gui/twwsettingsdialog.py new file mode 100644 index 0000000..9b7ba3b --- /dev/null +++ b/plugin/teksi_interlis_tool/gui/twwsettingsdialog.py @@ -0,0 +1,186 @@ +# ----------------------------------------------------------- +# +# Profile +# Copyright (C) 2012 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, print to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +import logging + +from qgis.core import QgsProject +from qgis.PyQt.QtCore import QSettings, pyqtSlot +from qgis.PyQt.QtGui import QColor +from qgis.PyQt.QtWidgets import QDialog, QFileDialog + +from ..utils import get_ui_class + +DIALOG_UI = get_ui_class("twwsettingsdialog.ui") + +LOGFORMAT = "%(asctime)s:%(levelname)s:%(module)s:%(message)s" + + +class TwwSettingsDialog(QDialog, DIALOG_UI): + settings = QSettings() + + def __init__(self, parent=None): + QDialog.__init__(self, parent) + self.setupUi(self) + + project = QgsProject.instance() + + svgprofile_path = self.settings.value("/TWW/SvgProfilePath", None) + if svgprofile_path: + self.mGbOverrideDefaultProfileTemplate.setChecked(True) + self.mProfileTemplateFile.setText(svgprofile_path) + else: + self.mGbOverrideDefaultProfileTemplate.setChecked(False) + + develmode = self.settings.value("/TWW/DeveloperMode", False, type=bool) + self.mCbDevelMode.setChecked(develmode) + + adminmode = self.settings.value("/TWW/AdminMode", False, type=bool) + self.mCbAdminMode.setChecked(adminmode) + + lyr_special_structures, _ = project.readEntry("TWW", "SpecialStructureLayer") + lyr_graph_edges, _ = project.readEntry("TWW", "GraphEdgeLayer") + lyr_graph_nodes, _ = project.readEntry("TWW", "GraphNodeLayer") + + self.initLayerCombobox(self.mCbSpecialStructures, lyr_special_structures) + self.initLayerCombobox(self.mCbGraphEdges, lyr_graph_edges) + self.initLayerCombobox(self.mCbGraphNodes, lyr_graph_nodes) + + self.mCurrentProfileColorButton.setColor( + QColor(self.settings.value("/TWW/CurrentProfileColor", "#FF9500")) + ) + self.mHelperLineColorButton.setColor( + QColor(self.settings.value("/TWW/HelperLineColor", "#FFD900")) + ) + self.mHighlightColorButton.setColor( + QColor(self.settings.value("/TWW/HighlightColor", "#40FF40")) + ) + + self.mPbnChooseProfileTemplateFile.clicked.connect(self.onChooseProfileTemplateFileClicked) + self.mPbnChooseLogFile.clicked.connect(self.onChooseLogFileClicked) + + self.accepted.connect(self.onAccept) + + loglevel = self.settings.value("/TWW/LogLevel", "Warning") + self.mCbLogLevel.setCurrentIndex(self.mCbLogLevel.findText(self.tr(loglevel))) + + logfile = self.settings.value("/TWW/LogFile", None) + + if logfile is not None: + self.mGbLogToFile.setChecked(True) + self.mLogFile.setText(logfile) + else: + self.mGbLogToFile.setChecked(False) + + def initLayerCombobox(self, combobox, default): + reg = QgsProject.instance() + for key, layer in list(reg.mapLayers().items()): + combobox.addItem(layer.name(), key) + + idx = combobox.findData(default) + if idx != -1: + combobox.setCurrentIndex(idx) + + @pyqtSlot() + def onAccept(self): + twwlogger = logging.getLogger("tww") + # General settings + if self.mGbOverrideDefaultProfileTemplate.isChecked() and self.mProfileTemplateFile.text(): + self.settings.setValue("/TWW/SvgProfilePath", self.mProfileTemplateFile.text()) + else: + self.settings.remove("/TWW/SvgProfilePath") + + self.settings.setValue("/TWW/DeveloperMode", self.mCbDevelMode.isChecked()) + self.settings.setValue("/TWW/AdminMode", self.mCbAdminMode.isChecked()) + + # Logging + if hasattr(twwlogger, "twwFileHandler"): + twwlogger.removeHandler(twwlogger.twwFileHandler) + del twwlogger.twwFileHandler + + if self.mGbLogToFile.isChecked(): + logfile = str(self.mLogFile.text()) + log_handler = logging.FileHandler(logfile) + fmt = logging.Formatter(LOGFORMAT) + log_handler.setFormatter(fmt) + twwlogger.addHandler(log_handler) + twwlogger.twwFileHandler = log_handler + self.settings.setValue("/TWW/LogFile", logfile) + else: + self.settings.setValue("/TWW/LogFile", None) + + if self.tr("Debug") == self.mCbLogLevel.currentText(): + twwlogger.setLevel(logging.DEBUG) + self.settings.setValue("/TWW/LogLevel", "Debug") + elif self.tr("Info") == self.mCbLogLevel.currentText(): + twwlogger.setLevel(logging.INFO) + self.settings.setValue("/TWW/LogLevel", "Info") + elif self.tr("Warning") == self.mCbLogLevel.currentText(): + twwlogger.setLevel(logging.WARNING) + self.settings.setValue("/TWW/LogLevel", "Warning") + elif self.tr("Error") == self.mCbLogLevel.currentText(): + twwlogger.setLevel(logging.ERROR) + self.settings.setValue("/TWW/LogLevel", "Error") + + # Save colors + self.settings.setValue("/TWW/HelperLineColor", self.mHelperLineColorButton.color().name()) + self.settings.setValue("/TWW/HighlightColor", self.mHighlightColorButton.color().name()) + self.settings.setValue( + "/TWW/CurrentProfileColor", self.mCurrentProfileColorButton.color().name() + ) + + # Project specific settings + project = QgsProject.instance() + + specialstructure_idx = self.mCbSpecialStructures.currentIndex() + graph_edgelayer_idx = self.mCbGraphEdges.currentIndex() + graph_nodelayer_idx = self.mCbGraphNodes.currentIndex() + + project.writeEntry( + "TWW", + "SpecialStructureLayer", + self.mCbSpecialStructures.itemData(specialstructure_idx), + ) + project.writeEntry( + "TWW", "GraphEdgeLayer", self.mCbGraphEdges.itemData(graph_edgelayer_idx) + ) + project.writeEntry( + "TWW", "GraphNodeLayer", self.mCbGraphNodes.itemData(graph_nodelayer_idx) + ) + + @pyqtSlot() + def onChooseProfileTemplateFileClicked(self): + filename, __ = QFileDialog.getOpenFileName( + self, + self.tr("Select profile template"), + "", + self.tr("HTML files(*.htm *.html)"), + ) + self.mProfileTemplateFile.setText(filename) + + @pyqtSlot() + def onChooseLogFileClicked(self): + filename, __ = QFileDialog.getSaveFileName( + self, self.tr("Select log file"), "", self.tr("Log files(*.log)") + ) + self.mLogFile.setText(filename) diff --git a/plugin/teksi_interlis_tool/icons/interlis_export.svg b/plugin/teksi_interlis_tool/icons/interlis_export.svg new file mode 100644 index 0000000..561775c --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/interlis_export.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/interlis_import.svg b/plugin/teksi_interlis_tool/icons/interlis_import.svg new file mode 100644 index 0000000..3dd3fe1 --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/interlis_import.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/link-wastewater-networkelement.svg b/plugin/teksi_interlis_tool/icons/link-wastewater-networkelement.svg new file mode 100644 index 0000000..4ed1c91 --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/link-wastewater-networkelement.svg @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/newproject.svg b/plugin/teksi_interlis_tool/icons/newproject.svg new file mode 100644 index 0000000..854eb12 --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/newproject.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/refresh-network.svg b/plugin/teksi_interlis_tool/icons/refresh-network.svg new file mode 100644 index 0000000..7c8dd6a --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/refresh-network.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + SQL + + + + + diff --git a/plugin/teksi_interlis_tool/icons/teksi-abwasser-logo.svg b/plugin/teksi_interlis_tool/icons/teksi-abwasser-logo.svg new file mode 100644 index 0000000..d3af21e --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/teksi-abwasser-logo.svg @@ -0,0 +1,55 @@ + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/twwIcon.png b/plugin/teksi_interlis_tool/icons/twwIcon.png new file mode 100644 index 0000000..aad5864 Binary files /dev/null and b/plugin/teksi_interlis_tool/icons/twwIcon.png differ diff --git a/plugin/teksi_interlis_tool/icons/twwIcon.svg b/plugin/teksi_interlis_tool/icons/twwIcon.svg new file mode 100644 index 0000000..66c5cab --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/twwIcon.svg @@ -0,0 +1,473 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="overflow:visible"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/wastewater-downstream.svg b/plugin/teksi_interlis_tool/icons/wastewater-downstream.svg new file mode 100644 index 0000000..b9426bb --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/wastewater-downstream.svg @@ -0,0 +1,2389 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/wastewater-profile.svg b/plugin/teksi_interlis_tool/icons/wastewater-profile.svg new file mode 100644 index 0000000..daccc50 --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/wastewater-profile.svg @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/wastewater-upstream.svg b/plugin/teksi_interlis_tool/icons/wastewater-upstream.svg new file mode 100644 index 0000000..d84cc3c --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/wastewater-upstream.svg @@ -0,0 +1,2389 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/icons/wizard.svg b/plugin/teksi_interlis_tool/icons/wizard.svg new file mode 100644 index 0000000..1f2e0fc --- /dev/null +++ b/plugin/teksi_interlis_tool/icons/wizard.svg @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/interlis/config.py b/plugin/teksi_interlis_tool/interlis/config.py new file mode 100644 index 0000000..1bfeeb5 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/config.py @@ -0,0 +1,25 @@ +import os + +BASE = os.path.dirname(__file__) + +ILIVALIDATOR = os.path.join(BASE, "bin", "ilivalidator-1.11.9", "ilivalidator-1.11.9.jar") + +TWW_DEFAULT_PGSERVICE = "pg_tww" +TWW_OD_SCHEMA = "tww_od" +TWW_VL_SCHEMA = "tww_vl" +TWW_SYS_SCHEMA = "tww_sys" +ABWASSER_SCHEMA = "pg2ili_abwasser" +TWW_AG_SCHEMA = "tww_ag6496" +MODEL_NAME_VSA_KEK = "VSA_KEK_2020_1_LV95" +MODEL_NAME_SIA405_ABWASSER = "SIA405_ABWASSER_2020_1_LV95" +MODEL_NAME_SIA405_BASE_ABWASSER = "SIA405_Base_Abwasser_1_LV95" +MODEL_NAME_DSS = "DSS_2020_1_LV95" +MODEL_NAME_AG96 = "Genereller_Entwaesserungsplan_AG" +MODEL_NAME_AG64 = "Abwasserkataster_AG_V2_LV95" + +TOPIC_NAME_SIA405_ADMINISTRATION = "SIA405_Base_Abwasser_1_LV95.Administration" +TOPIC_NAME_SIA405_ABWASSER = "SIA405_ABWASSER_2020_1_LV95.SIA405_Abwasser" +TOPIC_NAME_DSS = "DSS_2020_1_LV95.Siedlungsentwaesserung" +TOPIC_NAME_KEK = "VSA_KEK_2020_1_LV95.KEK" +TOPIC_NAME_AG96 = "Genereller_Entwaesserungsplan_AG.AG96" +TOPIC_NAME_AG64 = "Abwasserkataster_AG_V2_LV95.AG64" diff --git a/plugin/teksi_interlis_tool/interlis/gui/__init__.py b/plugin/teksi_interlis_tool/interlis/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/interlis/gui/editors/__init__.py b/plugin/teksi_interlis_tool/interlis/gui/editors/__init__.py new file mode 100644 index 0000000..10af290 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/editors/__init__.py @@ -0,0 +1,25 @@ +import importlib +import pkgutil + + +def import_submodules(package, recursive=True): + """Import all submodules of a module, recursively, including subpackages + + :param package: package (name or actual module) + :type package: str | module + :rtype: dict[str, types.ModuleType] + + Taken from https://stackoverflow.com/a/25562415/13690651 + """ + if isinstance(package, str): + package = importlib.import_module(package) + results = {} + for loader, name, is_pkg in pkgutil.walk_packages(package.__path__): + full_name = package.__name__ + "." + name + results[full_name] = importlib.import_module(full_name) + if recursive and is_pkg: + results.update(import_submodules(full_name)) + return results + + +import_submodules(__name__) diff --git a/plugin/teksi_interlis_tool/interlis/gui/editors/base.py b/plugin/teksi_interlis_tool/interlis/gui/editors/base.py new file mode 100644 index 0000000..bed275a --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/editors/base.py @@ -0,0 +1,155 @@ +import os +from collections import defaultdict + +from qgis.PyQt.QtCore import Qt +from qgis.PyQt.QtGui import QBrush, QColor +from qgis.PyQt.QtWidgets import QTreeWidgetItem, QWidget +from qgis.PyQt.uic import loadUi +from sqlalchemy import inspect + + +class Editor: + """ + Base class to manage import options for TWW classes. + + Editor subclasses are responsible of: + - managing a listwidgetitem + - providing a widget to edit options + - change the current session objects according to widget interaction + - validate objects according to the current session + """ + + # Validity + INVALID = "INVALID" + UNKNOWN = "UNKNOWN" + WARNING = "WARNING" + VALID = "VALID" + + # State + NEW = "NEW" + DELETED = "DELETED" + MODIFIED = "MODIFIED" + EXISTING = "EXISTING" + + class_name = "base" + widget_name = "base.ui" + + registry = defaultdict(lambda: Editor) + + def __init_subclass__(cls): + """ + Populates Editor.registry + """ + Editor.registry[cls.class_name] = cls + + @staticmethod + def factory(main_dialog, session, obj): + """ + Creates an Editor instance, choosing the correct subclass from the registry + """ + editor_class = Editor.registry[obj.__class__.__name__] + return editor_class(main_dialog, session, obj) + + def __init__(self, main_dialog, session, obj): + self.main_dialog = main_dialog + self.session = session + self.obj = obj + + self.preprocess() + + self.update_state() + + @property + def listitem(self): + """ + The editor's listitem (created on the fly if needed) + """ + if not hasattr(self, "_listitem"): + self._listitem = QTreeWidgetItem() + self._listitem.setCheckState( + 0, Qt.Checked if self.initially_checked() else Qt.Unchecked + ) + self.update_listitem() + return self._listitem + + def update_listitem(self): + disp_id = str( + getattr(self.obj, "obj_id", getattr(self.obj, "value_en", "?")) + ) # some elements may not have obj_id, such as value_lists + self.listitem.setText(0, getattr(self.obj, "identifier", disp_id)) + self.listitem.setToolTip(0, disp_id) + + self.listitem.setText(1, self.status) + + self.listitem.setText(2, self.validity) + if self.status == Editor.EXISTING: + color = "lightgray" + elif self.validity == Editor.INVALID: + color = "red" + elif self.validity == Editor.WARNING: + color = "orange" + elif self.validity == Editor.VALID: + color = "lightgreen" + else: + color = "lightgray" + self.listitem.setBackground(2, QBrush(QColor(color))) + + @property + def widget(self): + """ + The editor's widget (created on the fly if needed) + """ + if not hasattr(self, "_widget"): + + class BaseWidget(QWidget): + pass + + self._widget = BaseWidget() + loadUi(os.path.join(os.path.dirname(__file__), self.widget_name), self._widget) + self.init_widget() + return self._widget + + def preprocess(self): + """ + Run some preprocessing steps (such as auto-assigning data)... To be overriden by subclasses. + """ + + def init_widget(self): + """ + Initialize the widget here, for things like connecting signals... To be overriden by subclasses. + """ + + def update_widget(self): + """ + Update the widget here, for things like repopulating from session... To be overriden by subclasses. + """ + + def update_state(self): + """ + Updates status and calls validate. Call this when the underlying object may have changed. + """ + obj_inspect = inspect(self.obj) + if obj_inspect.pending: + self.status = Editor.NEW + elif obj_inspect.deleted: + self.status = Editor.DELETED + elif obj_inspect.modified: + self.status = Editor.MODIFIED + elif obj_inspect.persistent: + self.status = Editor.EXISTING + else: + self.status = Editor.UNKNOWN + self.validate() + + def validate(self): + """ + Updates validity and message. To be overriden by subclasses. You should probably call update_state if you need to revalidate. + """ + self.validity = Editor.VALID + self.message = "No validity check" + + def initially_checked(self): + """ + Determines if the item must be initially checked. To be overriden by subclasses. + """ + return True diff --git a/plugin/teksi_interlis_tool/interlis/gui/editors/base.ui b/plugin/teksi_interlis_tool/interlis/gui/editors/base.ui new file mode 100644 index 0000000..c799300 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/editors/base.ui @@ -0,0 +1,31 @@ + + + Form + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + No import options + + + Qt::AlignCenter + + + + + + + + diff --git a/plugin/teksi_interlis_tool/interlis/gui/editors/damage_channel.py b/plugin/teksi_interlis_tool/interlis/gui/editors/damage_channel.py new file mode 100644 index 0000000..0bdcf0e --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/editors/damage_channel.py @@ -0,0 +1,17 @@ +from .base import Editor + + +class DamageChannelEditor(Editor): + class_name = "damage_channel" + + # DISABLED FOR NOW AS PER https://github.com/TWW/tww2ili/issues/8 + # this would allow to deselect BCD inspections (start of inspection) by default, + # as they don't provide valuable information. Once consensus is reached, we + # can remove this Editor altogether. + # def initially_checked(self): + # """ + # Determines if the item must be initially checked. To be overriden by subclasses. + # """ + # if self.obj.channel_damage_code__REL.value_en == "BCD": + # return False + # return True diff --git a/plugin/teksi_interlis_tool/interlis/gui/editors/data_media.py b/plugin/teksi_interlis_tool/interlis/gui/editors/data_media.py new file mode 100644 index 0000000..cb03ee2 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/editors/data_media.py @@ -0,0 +1,41 @@ +import os + +from .base import Editor + + +class DataMediaEditor(Editor): + class_name = "data_media" + widget_name = "data_media.ui" + + def __init__(self, *args, **kwargs): + self._path_was_changed = False + super().__init__(*args, **kwargs) + + def init_widget(self): + self.widget.pushButton.pressed.connect(lambda: self.button_clicked()) + self.update_widget() + + def update_widget(self): + self.widget.lineEdit.setText(self.obj.path) + + def button_clicked(self): + self.obj.path = self.widget.lineEdit.text() + self._path_was_changed = True + + self.update_state() + self.main_dialog.refresh_editor(self) + self.main_dialog.update_tree() + + def validate(self): + if not self._path_was_changed: + self.validity = Editor.WARNING + self.message = "Path was not adapted." + elif not os.path.exists(self.obj.path): + self.validity = Editor.WARNING + self.message = "This path does not exist on the current system" + elif not os.path.isdir(self.obj.path): + self.validity = Editor.WARNING + self.message = "This path is not a directory" + else: + self.validity = Editor.VALID + self.message = "No warning" diff --git a/plugin/teksi_interlis_tool/interlis/gui/editors/data_media.ui b/plugin/teksi_interlis_tool/interlis/gui/editors/data_media.ui new file mode 100644 index 0000000..1722c07 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/editors/data_media.ui @@ -0,0 +1,48 @@ + + + Form + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + + + + + + Set + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/interlis/gui/featureselectorwidget.py b/plugin/teksi_interlis_tool/interlis/gui/featureselectorwidget.py new file mode 100644 index 0000000..068695a --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/featureselectorwidget.py @@ -0,0 +1,236 @@ +# ----------------------------------------------------------- +# +# QGIS wincan 2 TWW Plugin +# Copyright (C) 2016 Denis Rouzaud +# +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + + +from qgis.core import ( + Qgis, + QgsApplication, + QgsExpression, + QgsExpressionContext, + QgsExpressionContextScope, + QgsFeature, +) +from qgis.gui import QgsHighlight, QgsMapToolIdentifyFeature +from qgis.PyQt.QtCore import QSettings, QTimer, pyqtSignal, pyqtSlot +from qgis.PyQt.QtGui import QColor +from qgis.PyQt.QtWidgets import QAction, QHBoxLayout, QLineEdit, QToolButton, QWidget + + +class CanvasExtent: + Fixed = 1 + Pan = 2 + Scale = 3 + + +class FeatureSelectorWidget(QWidget): + feature_identified = pyqtSignal(QgsFeature) + + def __init__(self, parent): + QWidget.__init__(self, parent) + + edit_layout = QHBoxLayout() + edit_layout.setContentsMargins(0, 0, 0, 0) + edit_layout.setSpacing(2) + self.setLayout(edit_layout) + + self.line_edit = QLineEdit(self) + self.line_edit.setReadOnly(True) + edit_layout.addWidget(self.line_edit) + + self.highlight_feature_button = QToolButton(self) + self.highlight_feature_button.setPopupMode(QToolButton.MenuButtonPopup) + self.highlight_feature_action = QAction( + QgsApplication.getThemeIcon("/mActionHighlightFeature.svg"), "Highlight feature", self + ) + self.scale_highlight_feature_action = QAction( + QgsApplication.getThemeIcon("/mActionScaleHighlightFeature.svg"), + "Scale and highlight feature", + self, + ) + self.pan_highlight_feature_action = QAction( + QgsApplication.getThemeIcon("/mActionPanHighlightFeature.svg"), + "Pan and highlight feature", + self, + ) + self.highlight_feature_button.addAction(self.highlight_feature_action) + self.highlight_feature_button.addAction(self.scale_highlight_feature_action) + self.highlight_feature_button.addAction(self.pan_highlight_feature_action) + self.highlight_feature_button.setDefaultAction(self.highlight_feature_action) + edit_layout.addWidget(self.highlight_feature_button) + + self.map_identification_button = QToolButton(self) + self.map_identification_button.setIcon( + QgsApplication.getThemeIcon("/mActionMapIdentification.svg") + ) + self.map_identification_button.setText("Select on map") + self.map_identification_button.setCheckable(True) + edit_layout.addWidget(self.map_identification_button) + + self.map_identification_button.clicked.connect(self.map_identification) + self.highlight_feature_button.triggered.connect(self.highlight_action_triggered) + + self.layer = None + self.map_tool = None + self.canvas = None + self.window_widget = None + self.highlight = None + self.feature = QgsFeature() + + def set_canvas(self, map_canvas): + self.map_tool = QgsMapToolIdentifyFeature(map_canvas) + self.map_tool.setButton(self.map_identification_button) + self.canvas = map_canvas + + def set_layer(self, layer): + self.layer = layer + + def set_feature(self, feature, canvas_extent=CanvasExtent.Fixed): + self.line_edit.clear() + self.feature = feature + + if self.feature is None or not self.feature.isValid() or self.layer is None: + return + + expression = QgsExpression(self.layer.displayExpression()) + context = QgsExpressionContext() + scope = QgsExpressionContextScope() + context.appendScope(scope) + scope.setFeature(feature) + feature_title = expression.evaluate(context) + if feature_title == "": + feature_title = feature.id() + self.line_edit.setText(str(feature_title)) + self.highlight_feature(canvas_extent) + + def clear(self): + self.feature = QgsFeature() + self.line_edit.clear() + + @pyqtSlot() + def map_identification(self): + if self.layer is None or self.map_tool is None or self.canvas is None: + return + + self.map_tool.setLayer(self.layer) + self.canvas.setMapTool(self.map_tool) + + self.window_widget = QWidget.window(self) + self.canvas.window().raise_() + self.canvas.activateWindow() + self.canvas.setFocus() + + self.map_tool.featureIdentified.connect(self.map_tool_feature_identified) + self.map_tool.deactivated.connect(self.map_tool_deactivated) + + def map_tool_feature_identified(self, feature): + feature = QgsFeature(feature) + self.feature_identified.emit(feature) + self.unset_map_tool() + self.set_feature(feature) + + def map_tool_deactivated(self): + if self.window_widget is not None: + self.window_widget.raise_() + self.window_widget.activateWindow() + + def highlight_feature(self, canvas_extent=CanvasExtent.Fixed): + if self.canvas is None or not self.feature.isValid(): + return + + geom = self.feature.geometry() + + if geom is None: + return + + if canvas_extent == CanvasExtent.Scale: + feature_bounding_box = geom.boundingBox() + feature_bounding_box = self.canvas.mapSettings().layerToMapCoordinates( + self.layer, feature_bounding_box + ) + extent = self.canvas.extent() + if not extent.contains(feature_bounding_box): + extent.combineExtentWith(feature_bounding_box) + extent.scale(1.1) + self.canvas.setExtent(extent) + self.canvas.refresh() + + elif canvas_extent == CanvasExtent.Pan: + centroid = geom.centroid() + center = centroid.asPoint() + + center = self.canvas.mapSettings().layerToMapCoordinates(self.layer, center) + self.canvas.zoomByFactor(1.0, center) # refresh is done in this method + + # highlight + self.delete_highlight() + self.highlight = QgsHighlight(self.canvas, geom, self.layer) + + settings = QSettings() + color = QColor(settings.value("/Map/highlight/color", Qgis.DEFAULT_HIGHLIGHT_COLOR.name())) + alpha = int( + settings.value("/Map/highlight/colorAlpha", Qgis.DEFAULT_HIGHLIGHT_COLOR.alpha()) + ) + buffer = 2 * float( + settings.value("/Map/highlight/buffer", Qgis.DEFAULT_HIGHLIGHT_BUFFER_MM) + ) + min_width = 2 * float( + settings.value("/Map/highlight/min_width", Qgis.DEFAULT_HIGHLIGHT_MIN_WIDTH_MM) + ) + + self.highlight.setColor(color) # sets also fill with default alpha + color.setAlpha(alpha) + self.highlight.setFillColor(color) # sets fill with alpha + self.highlight.setBuffer(buffer) + self.highlight.setMinWidth(min_width) + self.highlight.setWidth(4.0) + self.highlight.show() + + self.timer = QTimer(self) + self.timer.setSingleShot(True) + self.timer.timeout.connect(self.delete_highlight) + self.timer.start(3000) + + def delete_highlight(self): + if self.highlight is not None: + self.highlight.hide() + del self.highlight + self.highlight = None + + def unset_map_tool(self): + if self.canvas is not None and self.map_tool is not None: + # this will call mapTool.deactivated + self.canvas.unsetMapTool(self.map_tool) + + def highlight_action_triggered(self, action): + self.highlight_feature_button.setDefaultAction(action) + + if action == self.highlight_feature_action: + self.highlight_feature() + + elif action == self.scale_highlight_feature_action: + self.highlight_feature(CanvasExtent.Scale) + + elif action == self.pan_highlight_feature_action: + self.highlight_feature(CanvasExtent.Pan) diff --git a/plugin/teksi_interlis_tool/interlis/gui/interlis_export_settings_dialog.py b/plugin/teksi_interlis_tool/interlis/gui/interlis_export_settings_dialog.py new file mode 100644 index 0000000..b61aba0 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/interlis_export_settings_dialog.py @@ -0,0 +1,119 @@ +import os +from collections import OrderedDict + +from qgis.core import Qgis, QgsSettings +from qgis.PyQt.QtWidgets import QCheckBox, QDialog +from qgis.PyQt.uic import loadUi + +from ...utils.twwlayermanager import TwwLayerManager +from .. import config +from ..processing_algs.extractlabels_interlis import ExtractlabelsInterlisAlgorithm + + +class InterlisExportSettingsDialog(QDialog): + def __init__(self, parent): + super().__init__(parent) + loadUi(os.path.join(os.path.dirname(__file__), "interlis_export_settings_dialog.ui"), self) + + self.finished.connect(self.on_finish) + + # Fill models selection combobox + self.export_model_selection_comboBox.addItem( + config.MODEL_NAME_DSS, [config.MODEL_NAME_DSS] + ) + self.export_model_selection_comboBox.addItem( + config.MODEL_NAME_SIA405_ABWASSER, [config.MODEL_NAME_SIA405_ABWASSER] + ) + self.export_model_selection_comboBox.addItem( + config.MODEL_NAME_VSA_KEK, + [config.MODEL_NAME_VSA_KEK, config.MODEL_NAME_SIA405_ABWASSER], + ) + + # Fill orientation selection combobox + self.export_orientation_selection_comboBox.clear() + self.export_orientation_selection_comboBox.addItem("90°", 90.0) + self.export_orientation_selection_comboBox.addItem("0°", 0.0) + self.export_orientation_selection_comboBox.addItem("-90°", -90.0) + + structures_layer = TwwLayerManager.layer("vw_tww_wastewater_structure") + reaches_layer = TwwLayerManager.layer("vw_tww_reach") + self.structures = structures_layer.selectedFeatures() if structures_layer else [] + self.reaches = reaches_layer.selectedFeatures() if reaches_layer else [] + + self.limit_checkbox.setText( + f"Limit to selection ({len(self.structures)} structures and {len(self.reaches)} reaches)" + ) + + # Remember save next to file checkbox + settings_value = QgsSettings().value("tww_plugin/logs_next_to_file", False) + self.save_logs_next_to_file_checkbox.setChecked( + settings_value is True or settings_value == "true" + ) + + # Populate the labels list (restoring checked states of scaes) + selected_scales = QgsSettings().value("tww_plugin/last_selected_scales", "").split(",") + qgis_version_ok = Qgis.QGIS_VERSION_INT >= 32602 + self.labels_groupbox.setEnabled(qgis_version_ok) + self.labels_qgis_warning_label.setVisible(not qgis_version_ok) + self.scale_checkboxes = OrderedDict() + for scale_key, scale_disp, scale_val in ExtractlabelsInterlisAlgorithm.AVAILABLE_SCALES: + checkbox = QCheckBox(f"{scale_disp} [1:{scale_val}]") + checkbox.setChecked(qgis_version_ok and scale_key in selected_scales) + self.scale_checkboxes[scale_key] = checkbox + self.labels_groupbox.layout().addWidget(checkbox) + + def on_finish(self): + # Remember save next to file checkbox + QgsSettings().setValue("tww_plugin/logs_next_to_file", self.logs_next_to_file) + + # Save checked state of scales + if self.labels_groupbox.isChecked(): + selected_scales = [] + for key, checkbox in self.scale_checkboxes.items(): + if checkbox.isChecked(): + selected_scales.append(key) + QgsSettings().setValue("tww_plugin/last_selected_scales", ",".join(selected_scales)) + + @property + def logs_next_to_file(self): + return self.save_logs_next_to_file_checkbox.isChecked() + + @property + def selected_ids(self): + if self.limit_checkbox.isChecked(): + ids = [] + for struct in self.structures: + ids.append(str(struct["wn_obj_id"])) + for reach in self.reaches: + ids.append(str(reach["obj_id"])) + ids.append(str(reach["rp_from_fk_wastewater_networkelement"])) + ids.append(str(reach["rp_to_fk_wastewater_networkelement"])) + return ids + else: + return None + + @property + def limit_to_selection(self): + return self.limit_checkbox.isChecked() + + @property + def selected_labels_scales_indices(self): + if self.labels_groupbox.isChecked(): + scales = [] + for i, checkbox in enumerate(self.scale_checkboxes.values()): + if checkbox.isChecked(): + scales.append(i) + return scales + else: + return [] + + def selected_model(self): + return self.export_model_selection_comboBox.currentText() + + def selected_models(self): + return self.export_model_selection_comboBox.currentData() + + @property + def labels_orientation_offset(self): + eorientation = self.export_orientation_selection_comboBox.currentData() + return eorientation diff --git a/plugin/teksi_interlis_tool/interlis/gui/interlis_export_settings_dialog.ui b/plugin/teksi_interlis_tool/interlis/gui/interlis_export_settings_dialog.ui new file mode 100644 index 0000000..99caff2 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/interlis_export_settings_dialog.ui @@ -0,0 +1,143 @@ + + + Dialog + + + + 0 + 0 + 381 + 322 + + + + + 0 + 0 + + + + TEKSI Wastewater INTERLIS export + + + + + + Export model selection + + + + + + + + + + + + + + Limit to selection + + + + + + + true + + + Export labels + + + true + + + + + + Angle for horizontal labels (default: 90.0°) + + + + + + + Angle for horizontal labels (default: 90.0°) + + + + + + + + + *{color: red; } + + + This feature requires QGIS 3.26.2 or newer. + + + + + + + + + + + + Save logs next to output + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/plugin/teksi_interlis_tool/interlis/gui/interlis_import_selection_dialog.py b/plugin/teksi_interlis_tool/interlis/gui/interlis_import_selection_dialog.py new file mode 100644 index 0000000..1095093 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/interlis_import_selection_dialog.py @@ -0,0 +1,231 @@ +import os +import sys +from collections import defaultdict + +from qgis.core import Qgis +from qgis.PyQt.QtCore import Qt +from qgis.PyQt.QtGui import QFont +from qgis.PyQt.QtWidgets import QDialog, QHeaderView, QMessageBox, QTreeWidgetItem +from qgis.PyQt.uic import loadUi +from qgis.utils import iface +from sqlalchemy import inspect +from sqlalchemy.orm import Session + +from ...utils.qt_utils import OverrideCursor +from .editors.base import Editor + +# Required for loadUi to find the custom widget +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..")) + + +class InterlisImportSelectionDialog(QDialog): + def __init__(self, parent=None): + super().__init__(parent) + loadUi( + os.path.join(os.path.dirname(__file__), "interlis_import_selection_dialog.ui"), self + ) + + self.accepted.connect(self.commit_session) + self.rejected.connect(self.rollback_session) + + header = self.treeWidget.header() + header.setSectionResizeMode(QHeaderView.ResizeToContents) + header.setSectionResizeMode(0, QHeaderView.Stretch) + + def init_with_session(self, session: Session): + """ + Shows the dialog with data from a session, and executes the dialog allowing to filter the rows to import + """ + self.session = session + + self.category_items = defaultdict(QTreeWidgetItem) # keys are instances' classes + self.editors = {} + + self.debugGroupBox.setChecked(False) + + self.treeWidget.clear() + self.update_tree() + + self.treeWidget.itemChanged.connect(self.item_changed) + self.treeWidget.currentItemChanged.connect(self.current_item_changed) + + def update_tree(self): + """ + Populates the tree, creating/updating items + """ + + for obj in self.session: + if obj not in self.editors: + self.editors[obj] = Editor.factory(self, self.session, obj) + editor = self.editors[obj] + + cls = obj.__class__ + + # Hide unmodified value lists items that may have been added to the session + if editor.status == Editor.EXISTING and cls.__table__.schema == "tww_vl": + continue + + if cls not in self.category_items: + self.category_items[cls].setText(0, cls.__name__) + self.category_items[cls].setCheckState(0, Qt.Checked) + self.category_items[cls].setFont( + 0, QFont(QFont().defaultFamily(), weight=QFont.Weight.Bold) + ) + self.treeWidget.addTopLevelItem(self.category_items[cls]) + + editor.update_listitem() + self.category_items[cls].addChild(editor.listitem) + + if editor.validity != Editor.VALID: + self.treeWidget.expandItem(self.category_items[cls]) + + # Show counts + for cls, category_item in self.category_items.items(): + category_item.setText(0, f"{cls.__name__} ({category_item.childCount()})") + + def item_changed(self, item, column): + """ + Adds or removes item's object from session. + + (propagation to parent/children is disabled for now) + """ + + checked = item.checkState(0) == Qt.Checked + + # add or remove object from session + obj = self.get_obj_from_listitem(item) + if obj is not None: + if checked: + self.session.add(obj) + else: + self.session.expunge(obj) + + checked_state = item.checkState(0) + if checked_state == Qt.PartiallyChecked: + return + + # propagate to children + for child in [item.child(i) for i in range(item.childCount())]: + child.setCheckState(0, checked_state) + + # propagate to parent + parent = item.parent() + if parent: + has_checked = False + has_unchecked = False + for sibling in [parent.child(i) for i in range(parent.childCount())]: + if sibling.checkState(0) == Qt.Checked: + has_checked = True + if sibling.checkState(0) == Qt.Unchecked: + has_unchecked = True + if has_checked and has_unchecked: + break + + if has_checked and has_unchecked: + parent.setCheckState(0, Qt.PartiallyChecked) + elif has_checked: + parent.setCheckState(0, Qt.Checked) + elif has_unchecked: + parent.setCheckState(0, Qt.Unchecked) + else: + # no children at all !! + parent.setCheckState(0, Qt.PartiallyChecked) + + def current_item_changed(self, current_item, previous_item): + """ + Calls refresh_widget_for_obj for the currently selected object + """ + for editor in self.editors.values(): + if editor.listitem == current_item: + self.refresh_editor(editor) + break + else: + self.debugTextEdit.clear() + self.validityLabel.clear() + current_widget = self.stackedWidget.currentWidget() + if current_widget: + self.stackedWidget.removeWidget(current_widget) + + def refresh_editor(self, editor): + """ + Refreshes the widget for the object, including validation, debug and status text + """ + # Revalidate the widget + editor.update_state() + + # Update the list item + editor.update_listitem() + + # Update generic widget contents + self.debugTextEdit.clear() + self.validityLabel.clear() + + # Show all attributes in the debug text edit + self.debugTextEdit.append("-- ATTRIBUTES --") + for c in inspect(editor.obj).mapper.column_attrs: + val = getattr(editor.obj, c.key) + self.debugTextEdit.append(f"{c.key}: {val}") + # Show sqlalchemy state in the debug text edit + self.debugTextEdit.append("-- SQLALCHEMY STATUS --") + for status_name in [ + "transient", + "pending", + "persistent", + "deleted", + "detached", + "modified", + "expired", + ]: + if getattr(inspect(editor.obj), status_name): + self.debugTextEdit.append(f"{status_name} ") + self.debugTextEdit.append("-- DEBUG --") + self.debugTextEdit.append(repr(editor.obj)) + + # Show the validity label + self.validityLabel.setText(editor.message) + if editor.validity == Editor.INVALID: + self.validityLabel.setStyleSheet("background-color: red; padding: 15px;") + elif editor.validity == Editor.WARNING: + self.validityLabel.setStyleSheet("background-color: orange; padding: 15px;") + elif editor.validity == Editor.VALID: + self.validityLabel.setStyleSheet("background-color: lightgreen; padding: 15px;") + else: + self.validityLabel.setStyleSheet("background-color: lightgray; padding: 15px;") + + # Update the actual widget + editor.update_widget() + + # Instantiate the specific widget (this has no effect if it's already active) + self.stackedWidget.addWidget(editor.widget) + self.stackedWidget.setCurrentWidget(editor.widget) + + def commit_session(self): + # TODO : rollback to pre-commit state, allowing user to try to fix issues + # probably a matter of creating a savepoint before saving with + # session.begin_nested() and one additionnal self.session.commit() + try: + with OverrideCursor(Qt.WaitCursor): + self.session.commit() + self.session.close() + except Exception as exception: + QMessageBox.critical(self, "Import error", f"Details: {exception}") + return + + if iface: + iface.messageBar().pushMessage( + "Sucess", "Data successfully imported", level=Qgis.Success + ) + + def rollback_session(self): + with OverrideCursor(Qt.WaitCursor): + self.session.rollback() + self.session.close() + + if iface: + iface.messageBar().pushMessage("Error", "Import was canceled", level=Qgis.Warning) + + def get_obj_from_listitem(self, listitem): + for obj, editor in self.editors.items(): + if editor.listitem == listitem: + return obj + return None diff --git a/plugin/teksi_interlis_tool/interlis/gui/interlis_import_selection_dialog.ui b/plugin/teksi_interlis_tool/interlis/gui/interlis_import_selection_dialog.ui new file mode 100644 index 0000000..f3145e7 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/interlis_import_selection_dialog.ui @@ -0,0 +1,249 @@ + + + Dialog + + + + 0 + 0 + 953 + 670 + + + + + 0 + 0 + + + + + 600 + 400 + + + + TWW interlis import + + + + + + Qt::Horizontal + + + + + 0 + 0 + + + + false + + + false + + + + name + + + + + state + + + + + validity + + + + + Inspections + + + + + + + + + + a + + + + + + + + + + + b + + + + + + + + + + + c + + + + + + + + + + + + Organisaitons + + + + + + + + + + a + + + + + + + + + + + b + + + + + + + + + + + c + + + + + + + + + + + + + + + + b + + + Unknown + + + true + + + 7 + + + + + + + + + + + + + Raw data (debug) + + + true + + + + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + QgsCollapsibleGroupBox + QGroupBox +
qgscollapsiblegroupbox.h
+ 1 +
+
+ + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/plugin/teksi_interlis_tool/interlis/gui/interlis_importer_exporter_gui.py b/plugin/teksi_interlis_tool/interlis/gui/interlis_importer_exporter_gui.py new file mode 100644 index 0000000..dbaeccf --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/gui/interlis_importer_exporter_gui.py @@ -0,0 +1,175 @@ +import os +import webbrowser + +from qgis.core import Qgis, QgsProject, QgsSettings +from qgis.PyQt.QtCore import QFileInfo, QObject, Qt +from qgis.PyQt.QtWidgets import QApplication, QFileDialog, QProgressDialog, QPushButton +from qgis.utils import iface + +from ...utils.qt_utils import OverrideCursor +from ..interlis_importer_exporter import ( + InterlisImporterExporter, + InterlisImporterExporterError, + InterlisImporterExporterStopped, +) +from .interlis_export_settings_dialog import InterlisExportSettingsDialog + + +class InterlisImporterExporterGui(QObject): + _PROGRESS_DIALOG_MINIMUM_WIDTH = 350 + + def __init__(self): + super().__init__(parent=None) + self.import_dialog = None + self.progress_dialog = None + + self.interlis_importer_exporter = InterlisImporterExporter( + progress_done_callback=self._progress_done_callback + ) + + def action_import(self): + """ + Is executed when the user clicks the importAction tool + """ + default_folder = QgsSettings().value( + "tww_plugin/last_interlis_path", QgsProject.instance().absolutePath() + ) + xtf_file_input, _ = QFileDialog.getOpenFileName( + None, + self.tr("Import file"), + default_folder, + self.tr("INTERLIS transfer files (*.xtf)"), + ) + if not xtf_file_input: + # Operation canceled + return + + QgsSettings().setValue("tww_plugin/last_interlis_path", os.path.dirname(xtf_file_input)) + + setting_value = QgsSettings().value("tww_plugin/logs_next_to_file", False) + logs_next_to_file = setting_value is True or setting_value == "true" + + self.progress_dialog = QProgressDialog("", "", 0, 100) + self.progress_dialog.setMinimumWidth(self._PROGRESS_DIALOG_MINIMUM_WIDTH) + self.progress_dialog.setCancelButtonText("Cancel") + self.progress_dialog.setMinimumDuration(0) + self.progress_dialog.setWindowTitle("Import INTERLIS data...") + + try: + with OverrideCursor(Qt.WaitCursor): + self.interlis_importer_exporter.interlis_import( + xtf_file_input, show_selection_dialog=True, logs_next_to_file=logs_next_to_file + ) + iface.mapCanvas().refreshAllLayers() + + except InterlisImporterExporterStopped: + self._cleanup() + iface.messageBar().pushMessage("Warning", "Import was canceled.", level=Qgis.Warning) + + except InterlisImporterExporterError as exception: + self._cleanup() + self.show_failure( + exception.error, + exception.additional_text, + exception.log_path, + ) + + except Exception as exception: + self._cleanup() + raise exception + + def action_export(self): + """ + Is executed when the user clicks the exportAction tool + """ + export_dialog = InterlisExportSettingsDialog(None) + + if export_dialog.exec_() == export_dialog.Rejected: + return + + default_folder = QgsSettings().value( + "tww_plugin/last_interlis_path", QgsProject.instance().absolutePath() + ) + file_name, _ = QFileDialog.getSaveFileName( + None, + self.tr("Export to file"), + os.path.join(default_folder, "tww-export.xtf"), + self.tr("INTERLIS transfer files (*.xtf)"), + ) + if not file_name: + # Operation canceled + return + QgsSettings().setValue("tww_plugin/last_interlis_path", os.path.dirname(file_name)) + + self.progress_dialog = QProgressDialog("", "", 0, 100) + self.progress_dialog.setMinimumWidth(self._PROGRESS_DIALOG_MINIMUM_WIDTH) + self.progress_dialog.setCancelButtonText("Cancel") + self.progress_dialog.setMinimumDuration(0) + self.progress_dialog.setWindowTitle("Export INTERLIS data...") + + try: + self.interlis_importer_exporter.interlis_export( + xtf_file_output=file_name, + export_models=export_dialog.selected_models(), + logs_next_to_file=export_dialog.logs_next_to_file, + limit_to_selection=export_dialog.limit_to_selection, + export_orientation=export_dialog.labels_orientation_offset, + selected_labels_scales_indices=export_dialog.selected_labels_scales_indices, + selected_ids=export_dialog.selected_ids, + ) + + self.show_success( + "Success", + f"Data successfully exported to {QFileInfo(file_name).path()}", + None, + ) + + except InterlisImporterExporterStopped: + self._cleanup() + iface.messageBar().pushMessage("Warning", "Export was canceled.", level=Qgis.Warning) + + except InterlisImporterExporterError as exception: + self._cleanup() + self.show_failure( + exception.error, + exception.additional_text, + exception.log_path, + ) + + except Exception as exception: + self._cleanup() + raise exception + + def _progress_done_callback(self, progress, text=None): + self._check_for_canceled() + if text: + self.progress_dialog.setLabelText(text) + self.progress_dialog.setValue(progress) + QApplication.processEvents() + + def _show_results(self, title, message, log_path, level): + widget = iface.messageBar().createMessage(title, message) + if log_path: + button = QPushButton(widget) + button.setText("Show logs") + button.pressed.connect(lambda p=log_path: webbrowser.open(p)) + widget.layout().addWidget(button) + iface.messageBar().pushWidget(widget, level) + + def show_failure(self, title, message, log_path): + self._show_results(title, message, log_path, Qgis.Warning) + + def show_success(self, title, message, log_path): + self._show_results(title, message, log_path, Qgis.Success) + + def _check_for_canceled(self): + if self.progress_dialog.wasCanceled(): + raise InterlisImporterExporterStopped + + def _cleanup(self): + if self.progress_dialog: + self.progress_dialog.close() + + def _progress_done(self): + self._check_for_canceled() + self.progress_dialog.setValue(self.progress_dialog.value() + 1) diff --git a/plugin/teksi_interlis_tool/interlis/interlis_importer_exporter.py b/plugin/teksi_interlis_tool/interlis/interlis_importer_exporter.py new file mode 100644 index 0000000..ec25a57 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_importer_exporter.py @@ -0,0 +1,618 @@ +import logging +import os +import tempfile + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QApplication + +from ..utils.database_utils import DatabaseUtils +from . import config +from .gui.interlis_import_selection_dialog import InterlisImportSelectionDialog +from .interlis_model_mapping.interlis_exporter_to_intermediate_schema import ( + InterlisExporterToIntermediateSchema, + InterlisExporterToIntermediateSchemaError, +) +from .interlis_model_mapping.interlis_importer_to_intermediate_schema import ( + InterlisImporterToIntermediateSchema, +) +from .interlis_model_mapping.model_interlis_dss import ModelInterlisDss +from .interlis_model_mapping.model_interlis_sia405_abwasser import ( + ModelInterlisSia405Abwasser, +) +from .interlis_model_mapping.model_interlis_vsa_kek import ModelInterlisVsaKek +from .interlis_model_mapping.model_tww import ModelTwwSys, ModelTwwVl +from .interlis_model_mapping.model_tww_od import ModelTwwOd +from .utils.ili2db import InterlisTools +from .utils.various import CmdException, LoggingHandlerContext, logger, make_log_path + + +class InterlisImporterExporterStopped(Exception): + pass + + +class InterlisImporterExporterError(Exception): + def __init__(self, error, additional_text, log_path): + self.error = error + self.additional_text = additional_text + self.log_path = log_path + + +class InterlisImporterExporter: + def __init__(self, progress_done_callback=None): + self.progress_done_callback = progress_done_callback + self.interlisTools = InterlisTools() + self.base_log_path = None + + self.model_classes_interlis = None + self.model_classes_tww_od = None + self.model_classes_tww_vl = None + self.model_classes_tww_sys = None + + self.current_progress = 0 + + def interlis_import(self, xtf_file_input, show_selection_dialog=False, logs_next_to_file=True): + # Configure logging + if logs_next_to_file: + self.base_log_path = xtf_file_input + else: + self.base_log_path = None + + # Validating the input file + self._progress_done(5, "Validating the input file...") + self._import_validate_xtf_file(xtf_file_input) + + # Get model to import from xtf file + self._progress_done(10, "Extract model from xtf...") + import_models = self.interlisTools.get_xtf_models(xtf_file_input) + + import_model = "" + if config.MODEL_NAME_VSA_KEK in import_models: + import_model = config.MODEL_NAME_VSA_KEK + elif config.MODEL_NAME_SIA405_ABWASSER in import_models: + import_model = config.MODEL_NAME_SIA405_ABWASSER + elif config.MODEL_NAME_DSS in import_models: + import_model = config.MODEL_NAME_DSS + elif config.MODEL_NAME_SIA405_BASE_ABWASSER in import_models: + import_model = config.MODEL_NAME_SIA405_ABWASSER + else: + error_text = f"No supported model was found among '{import_models}'." + if len(import_models) == 1: + error_text = f"The model '{import_models[0]}' is not supported." + raise InterlisImporterExporterError("Import error", error_text, None) + logger.info( + f"Model '{import_model}' was choosen for import among found models '{import_models}'" + ) + + # Prepare the temporary ili2pg model + self._progress_done(10, "Creating ili schema...") + self._clear_ili_schema(recreate_schema=True) + + self._progress_done(20) + self._create_ili_schema( + [import_model], ext_columns_no_constraints=True, create_basket_col=True + ) + + # Import from xtf file to ili2pg model + self._progress_done(30, "Importing XTF data...") + self._import_xtf_file(xtf_file_input=xtf_file_input) + + # Disable symbology triggers + self._progress_done(35, "Disable symbology and modification triggers...") + self._import_disable_symbology_and_modification_triggers() + + try: + # Import from the temporary ili2pg model + self._progress_done(40, "Converting to TEKSI Wastewater...") + tww_session = self._import_from_intermediate_schema(import_model) + + if show_selection_dialog: + self._progress_done(90, "Import objects selection...") + import_dialog = InterlisImportSelectionDialog() + import_dialog.init_with_session(tww_session) + QApplication.restoreOverrideCursor() + if import_dialog.exec_() == import_dialog.Rejected: + tww_session.rollback() + tww_session.close() + raise InterlisImporterExporterStopped() + QApplication.setOverrideCursor(Qt.WaitCursor) + else: + self._progress_done(90, "Commit session...") + tww_session.commit() + tww_session.close() + + # Update main_cover and main_wastewater_node + self._progress_done(95, "Update main cover and refresh materialized views...") + self._import_update_main_cover_and_refresh_mat_views() + + # Validate subclasses after import + self._check_subclass_counts() + + # Update organisations + self._progress_done(96, "Set organisations filter...") + self._import_manage_organisations() + + # Reenable symbology triggers + self._progress_done(97, "Reenable symbology and modification triggers...") + self._import_enable_symbology_and_modification_triggers() + + except Exception as exception: + # Make sure to re-enable triggers in case an exception occourred + try: + self._import_enable_symbology_and_modification_triggers() + except Exception as enable_trigger_exception: + logger.error( + f"Symbology triggers couldn't be re-enabled because an exception occourred: '{enable_trigger_exception}'" + ) + + # Raise the original exception for further error handling + raise exception + + self._progress_done(100) + logger.info("INTERLIS import finished.") + + def interlis_export( + self, + xtf_file_output, + export_models, + logs_next_to_file=True, + limit_to_selection=False, + export_orientation=90.0, + selected_labels_scales_indices=[], + selected_ids=None, + ): + # Validate subclasses before export + self._check_subclass_counts(limit_to_selection) + + # File name without extension (used later for export) + file_name_base, _ = os.path.splitext(xtf_file_output) + + # Configure logging + if logs_next_to_file: + self.base_log_path = xtf_file_output + else: + self.base_log_path = None + + self._progress_done(5, "Clearing ili schema...") + self._clear_ili_schema(recreate_schema=True) + + self._progress_done(15, "Creating ili schema...") + create_basket_col = False + if config.MODEL_NAME_VSA_KEK in export_models: + create_basket_col = True + self._create_ili_schema(export_models, create_basket_col=create_basket_col) + + # Export the labels file + tempdir = tempfile.TemporaryDirectory() + labels_file_path = None + if len(selected_labels_scales_indices): + self._progress_done(25) + labels_file_path = os.path.join(tempdir.name, "labels.geojson") + self._export_labels_file( + limit_to_selection=limit_to_selection, + selected_labels_scales_indices=selected_labels_scales_indices, + labels_file_path=labels_file_path, + ) + + # Export to the temporary ili2pg model + self._progress_done(35, "Converting from TEKSI Wastewater...") + self._export_to_intermediate_schema( + export_model=export_models[0], + file_name=xtf_file_output, + selected_ids=selected_ids, + export_orientation=export_orientation, + labels_file_path=labels_file_path, + basket_enabled=create_basket_col, + ) + tempdir.cleanup() # Cleanup + + self._progress_done(60) + self._export_xtf_files(file_name_base, export_models) + + self._progress_done(100) + logger.info("INTERLIS export finished.") + + def _import_validate_xtf_file(self, xtf_file_input): + log_path = make_log_path(self.base_log_path, "ilivalidator") + try: + self.interlisTools.validate_xtf_data( + xtf_file_input, + log_path, + ) + except CmdException: + raise InterlisImporterExporterError( + "Invalid file", + "The input file is not a valid XTF file. Open the logs for more details on the error.", + log_path, + ) + + def _import_xtf_file(self, xtf_file_input): + log_path = make_log_path(self.base_log_path, "ili2pg-import") + try: + self.interlisTools.import_xtf_data( + config.ABWASSER_SCHEMA, + xtf_file_input, + log_path, + ) + except CmdException: + raise InterlisImporterExporterError( + "Could not import data", + "Open the logs for more details on the error.", + log_path, + ) + + def _import_from_intermediate_schema(self, import_model): + log_handler = logging.FileHandler( + make_log_path(self.base_log_path, "tww2ili-import"), mode="w", encoding="utf-8" + ) + log_handler.setLevel(logging.INFO) + log_handler.setFormatter(logging.Formatter("%(levelname)-8s %(message)s")) + + self._init_model_classes(import_model) + + interlisImporterToIntermediateSchema = InterlisImporterToIntermediateSchema( + model=import_model, + model_classes_interlis=self.model_classes_interlis, + model_classes_tww_od=self.model_classes_tww_od, + model_classes_tww_vl=self.model_classes_tww_vl, + callback_progress_done=self._progress_done_intermediate_schema, + ) + + with LoggingHandlerContext(log_handler): + interlisImporterToIntermediateSchema.tww_import(skip_closing_tww_session=True) + + return interlisImporterToIntermediateSchema.session_tww + + def _import_manage_organisations(self): + logger.info("Update organisation tww_active") + DatabaseUtils.execute("SELECT tww_app.set_organisations_active();") + + def _import_update_main_cover_and_refresh_mat_views(self): + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + + logger.info("Update wastewater structure fk_main_cover") + cursor.execute("SELECT tww_app.wastewater_structure_update_fk_main_cover('', True);") + + logger.info("Update wastewater structure fk_main_wastewater_node") + cursor.execute( + "SELECT tww_app.wastewater_structure_update_fk_main_wastewater_node('', True);" + ) + + logger.info("Refresh materialized views") + cursor.execute("SELECT tww_app.network_refresh_network_simple();") + + def _import_disable_symbology_and_modification_triggers(self): + DatabaseUtils.disable_symbology_triggers() + DatabaseUtils.disable_modification_triggers() + + def _import_enable_symbology_and_modification_triggers(self): + DatabaseUtils.enable_symbology_triggers() + DatabaseUtils.update_symbology() + DatabaseUtils.enable_modification_triggers() + + def _export_labels_file( + self, + limit_to_selection, + selected_labels_scales_indices, + labels_file_path, + ): + self._progress_done(self.current_progress, "Extracting labels...") + + try: + # We only import now to avoid useless exception if dependencies aren't met + from qgis import processing + + from ..utils.twwlayermanager import TwwLayerManager + except ImportError: + raise InterlisImporterExporterError( + "Export labels error", + "Could not load export labels as qgis.processing module is not available.", + None, + ) + + structures_lyr = TwwLayerManager.layer("vw_tww_wastewater_structure") + reaches_lyr = TwwLayerManager.layer("vw_tww_reach") + if not structures_lyr or not reaches_lyr: + raise InterlisImporterExporterError( + "Could not find the vw_tww_wastewater_structure and/or the vw_tww_reach layers.", + "Make sure your TEKSI Wastewater project is open.", + None, + ) + + self._progress_done(self.current_progress + 5) + processing.run( + "tww:extractlabels_interlis", + { + "OUTPUT": labels_file_path, + "RESTRICT_TO_SELECTION": limit_to_selection, + "STRUCTURE_VIEW_LAYER": structures_lyr, + "REACH_VIEW_LAYER": reaches_lyr, + "SCALES": selected_labels_scales_indices, + }, + ) + + def _export_to_intermediate_schema( + self, + export_model, + file_name=None, + selected_ids=None, + export_orientation=90.0, + labels_file_path=None, + basket_enabled=False, + ): + log_handler = logging.FileHandler( + make_log_path(file_name, "tww2ili-export"), mode="w", encoding="utf-8" + ) + log_handler.setLevel(logging.INFO) + log_handler.setFormatter(logging.Formatter("%(levelname)-8s %(message)s")) + + self._init_model_classes(export_model) + + twwInterlisExporter = InterlisExporterToIntermediateSchema( + model=export_model, + model_classes_interlis=self.model_classes_interlis, + model_classes_tww_od=self.model_classes_tww_od, + model_classes_tww_vl=self.model_classes_tww_vl, + model_classes_tww_sys=self.model_classes_tww_sys, + labels_orientation_offset=export_orientation, + selection=selected_ids, + labels_file=labels_file_path, + basket_enabled=basket_enabled, + callback_progress_done=self._progress_done_intermediate_schema, + ) + + with LoggingHandlerContext(log_handler): + try: + twwInterlisExporter.tww_export() + except ( + InterlisExporterToIntermediateSchemaError + ) as interlisExporterToIntermediateSchemaError: + raise InterlisImporterExporterError( + "Could not export to the interlis schema", + f"{interlisExporterToIntermediateSchemaError}", + None, + ) + + def _export_xtf_files(self, file_name_base, export_models): + progress_step = (100 - self.current_progress) / (2 * len(export_models)) + progress_step = int(progress_step) + + xtf_export_errors = [] + for index, export_model_name in enumerate(export_models): + export_file_name = f"{file_name_base}_{export_model_name}.xtf" + + # Export from ili2pg model to file + self._progress_done(self.current_progress, f"Saving XTF for '{export_model_name}'...") + log_path = make_log_path(self.base_log_path, f"ili2pg-export-{export_model_name}") + try: + self.interlisTools.export_xtf_data( + schema=config.ABWASSER_SCHEMA, + xtf_file=export_file_name, + log_path=log_path, + model_name=export_model_name, + export_model_name=export_model_name, + ) + except CmdException: + xtf_export_errors.append( + InterlisImporterExporterError( + error=f"Could not export the model '{export_model_name}' from ili2pg schema", + additional_text="Open the logs for more details on the error.", + log_path=log_path, + ) + ) + continue + + self._progress_done( + self.current_progress + progress_step, + f"Validating XTF for '{export_model_name}'...", + ) + log_path = make_log_path(self.base_log_path, f"ilivalidator-{export_model_name}") + try: + self.interlisTools.validate_xtf_data( + export_file_name, + log_path, + ) + except CmdException: + xtf_export_errors.append( + InterlisImporterExporterError( + error=f"Validation of exported file '{export_file_name}' failed", + additional_text=f"The created file is not a valid {export_model_name} XTF file.", + log_path=log_path, + ) + ) + continue + + self._progress_done(self.current_progress + progress_step) + + # In case some export had an error raise the first one + if xtf_export_errors: + raise xtf_export_errors[0] + + def _clear_ili_schema(self, recreate_schema=False): + logger.info("CONNECTING TO DATABASE...") + + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + + if not recreate_schema: + # If the schema already exists, we just truncate all tables + cursor.execute( + f"SELECT schema_name FROM information_schema.schemata WHERE schema_name = '{config.ABWASSER_SCHEMA}';" + ) + if cursor.rowcount > 0: + logger.info( + f"Schema {config.ABWASSER_SCHEMA} already exists, we truncate instead" + ) + cursor.execute( + f"SELECT table_name FROM information_schema.tables WHERE table_schema = '{config.ABWASSER_SCHEMA}';" + ) + for row in cursor.fetchall(): + cursor.execute( + f"TRUNCATE TABLE {config.ABWASSER_SCHEMA}.{row[0]} CASCADE;" + ) + return + + logger.info(f"DROPPING THE SCHEMA {config.ABWASSER_SCHEMA}...") + cursor.execute(f'DROP SCHEMA IF EXISTS "{config.ABWASSER_SCHEMA}" CASCADE ;') + logger.info(f"CREATING THE SCHEMA {config.ABWASSER_SCHEMA}...") + cursor.execute(f'CREATE SCHEMA "{config.ABWASSER_SCHEMA}";') + + def _create_ili_schema( + self, models, ext_columns_no_constraints=False, create_basket_col=False + ): + log_path = make_log_path(self.base_log_path, "ili2pg-schemaimport") + try: + self.interlisTools.import_ili_schema( + config.ABWASSER_SCHEMA, + models, + log_path, + ext_columns_no_constraints=ext_columns_no_constraints, + create_basket_col=create_basket_col, + ) + except CmdException: + raise InterlisImporterExporterError( + "Could not create the ili2pg schema", + "Open the logs for more details on the error.", + log_path, + ) + + def _check_subclass_counts(self, limit_to_selection=False): + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "wastewater_networkelement", + ["reach", "wastewater_node"], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "wastewater_structure", + [ + "channel", + "manhole", + "special_structure", + "infiltration_installation", + "discharge_point", + "wwtp_structure", + "small_treatment_plant", + "drainless_toilet", + ], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "structure_part", + [ + "benching", + "tank_emptying", + "tank_cleaning", + "cover", + "access_aid", + "electric_equipment", + "electromechanical_equipment", + "solids_retention", + "backflow_prevention", + "flushing_nozzle", + "dryweather_flume", + "dryweather_downspout", + ], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "overflow", + ["pump", "leapingweir", "prank_weir"], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "maintenance_event", + ["maintenance", "examination", "bio_ecol_assessment"], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "damage", + ["damage_channel", "damage_manhole"], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "connection_object", + ["fountain", "individual_surface", "building", "reservoir"], + limit_to_selection, + ) + self._check_subclass_count( + config.TWW_OD_SCHEMA, + "zone", + ["infiltration_zone", "drainage_system"], + limit_to_selection, + ) + + def _check_subclass_count(self, schema_name, parent_name, child_list, limit_to_selection): + logger.info(f"INTEGRITY CHECK {parent_name} subclass data...") + logger.info("CONNECTING TO DATABASE...") + + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + + cursor.execute(f"SELECT obj_id FROM {schema_name}.{parent_name};") + parent_rows = cursor.fetchall() + if len(parent_rows) > 0: + parent_count = len(parent_rows) + logger.info(f"Number of {parent_name} datasets: {parent_count}") + for child_name in child_list: + cursor.execute(f"SELECT obj_id FROM {schema_name}.{child_name};") + child_rows = cursor.fetchall() + logger.info(f"Number of {child_name} datasets: {len(child_rows)}") + parent_count = parent_count - len(child_rows) + + if parent_count == 0: + logger.info( + f"OK: number of subclass elements of class {parent_name} OK in schema {schema_name}!" + ) + else: + if parent_count > 0: + errormsg = f"Too many superclass entries for {schema_name}.{parent_name}" + else: + errormsg = f"Too many subclass entries for {schema_name}.{parent_name}" + + if limit_to_selection: + logger.warning( + f"Overall Subclass Count: {errormsg}. The problem might lie outside the selection" + ) + else: + logger.error(f"Subclass Count error: {errormsg}") + raise InterlisImporterExporterError( + "Subclass Count error", + errormsg, + None, + ) + + def _init_model_classes(self, model): + ModelInterlis = ModelInterlisSia405Abwasser + if model == config.MODEL_NAME_DSS: + ModelInterlis = ModelInterlisDss + elif model == config.MODEL_NAME_VSA_KEK: + ModelInterlis = ModelInterlisVsaKek + self.model_classes_interlis = ModelInterlis().classes() + self._progress_done(self.current_progress + 1) + + if self.model_classes_tww_od is None: + self.model_classes_tww_od = ModelTwwOd().classes() + self._progress_done(self.current_progress + 1) + + if self.model_classes_tww_vl is None: + self.model_classes_tww_vl = ModelTwwVl().classes() + self._progress_done(self.current_progress + 1) + + if self.model_classes_tww_sys is None: + self.model_classes_tww_sys = ModelTwwSys().classes() + self._progress_done(self.current_progress + 1) + + def _progress_done_intermediate_schema(self): + self._progress_done(self.current_progress + 0.5) + + def _progress_done(self, progress, text=None): + self.current_progress = progress + if self.progress_done_callback: + self.progress_done_callback(int(progress), text) diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/__init__.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py new file mode 100644 index 0000000..28c9ae1 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py @@ -0,0 +1,3213 @@ +import json + +from geoalchemy2.functions import ST_Force2D, ST_GeomFromGeoJSON +from sqlalchemy import or_ +from sqlalchemy.orm import Session +from sqlalchemy.sql import text + +from ...utils.plugin_utils import logger +from .. import config, utils + + +class InterlisExporterToIntermediateSchemaError(Exception): + pass + + +class InterlisExporterToIntermediateSchema: + def __init__( + self, + model, + model_classes_interlis, + model_classes_tww_od, + model_classes_tww_vl, + model_classes_tww_sys, + labels_orientation_offset=90, + selection=None, + labels_file=None, + basket_enabled=False, + callback_progress_done=None, + use_vsacode=True, + ): + """ + Export data from the TWW model into the ili2pg model. + + Args: + selection: if provided, limits the export to networkelements that are provided in the selection + """ + self.model = model + self.callback_progress_done = callback_progress_done + + # Filtering + self.filtered = False + if selection: + self.filtered = True + + self.subset_ids = selection if selection is not None else [] + + self.labels_file = labels_file + self.use_vsacode = use_vsacode + self.oid_prefix = None + + self.basket_enabled = basket_enabled + + self.model_classes_interlis = model_classes_interlis + self.model_classes_tww_od = model_classes_tww_od + self.model_classes_tww_vl = model_classes_tww_vl + self.model_classes_tww_sys = model_classes_tww_sys + self.labels_orientation_offset = labels_orientation_offset + + self.tww_session = None + self.abwasser_session = None + self.tid_maker = utils.ili2db.TidMaker(id_attribute="obj_id") + + self.current_basket = None + self.basket_topic_sia405_administration = None + self.basket_topic_sia405_abwasser = None + self.basket_topic_dss = None + self.basket_topic_kek = None + + def tww_export(self): + # Logging disabled (very slow) + self.tww_session = Session( + utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False + ) + self.abwasser_session = Session( + utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False + ) + + # write self.subset_ids to logger.info + if self.filtered: + logger.info(f"Exporting selection {self.subset_ids}") + + try: + self._export() + self.abwasser_session.commit() + self.close_sessions() + except Exception as exception: + self.close_sessions() + raise exception + + def _export(self): + # Allow to insert rows with cyclic dependencies at once + self.abwasser_session.execute(text("SET CONSTRAINTS ALL DEFERRED;")) + + if self.basket_enabled: + self._create_basket() + self.current_basket = self.basket_topic_sia405_administration + + self._export_sia405_abwasser() + + if self.model == config.MODEL_NAME_DSS: + self.current_basket = self.basket_topic_dss + self._export_dss() + + if self.model == config.MODEL_NAME_VSA_KEK: + self.current_basket = self.basket_topic_kek + self._export_vsa_kek() + + # Labels + # Note: these are extracted from the optional labels file (not exported from the TWW database) + if self.labels_file: + logger.info(f"Exporting label positions from {self.labels_file}") + self._export_label_positions() + + def _create_basket(self): + dataset = self.model_classes_interlis.t_ili2db_dataset( + t_id=1, + datasetname="teksi-wastewater-export", + ) + self.abwasser_session.add(dataset) + + self.basket_topic_sia405_administration = self.model_classes_interlis.t_ili2db_basket( + t_id=2, + dataset=dataset.t_id, + topic=config.TOPIC_NAME_SIA405_ADMINISTRATION, + t_ili_tid=None, + attachmentkey=dataset.datasetname, + domains="", + ) + self.abwasser_session.add(self.basket_topic_sia405_administration) + + self.basket_topic_sia405_abwasser = self.model_classes_interlis.t_ili2db_basket( + t_id=3, + dataset=dataset.t_id, + topic=config.TOPIC_NAME_SIA405_ABWASSER, + t_ili_tid=None, + attachmentkey=dataset.datasetname, + domains="", + ) + self.abwasser_session.add(self.basket_topic_sia405_abwasser) + + self.basket_topic_dss = self.model_classes_interlis.t_ili2db_basket( + t_id=4, + dataset=dataset.t_id, + topic=config.TOPIC_NAME_DSS, + t_ili_tid=None, + attachmentkey=dataset.datasetname, + domains="", + ) + self.abwasser_session.add(self.basket_topic_dss) + + self.basket_topic_kek = self.model_classes_interlis.t_ili2db_basket( + t_id=5, + dataset=dataset.t_id, + topic=config.TOPIC_NAME_KEK, + t_ili_tid=None, + attachmentkey=dataset.datasetname, + domains="", + ) + self.abwasser_session.add(self.basket_topic_kek) + self.abwasser_session.flush() + + def _export_sia405_abwasser(self): + logger.info("Exporting TWW.organisation -> ABWASSER.organisation") + self._export_organisation() + self._check_for_stop() + + self.current_basket = self.basket_topic_sia405_abwasser + + logger.info("Exporting TWW.channel -> ABWASSER.kanal") + self._export_channel() + self._check_for_stop() + + logger.info("Exporting TWW.manhole -> ABWASSER.normschacht") + self._export_manhole() + self._check_for_stop() + + logger.info("Exporting TWW.discharge_point -> ABWASSER.einleitstelle") + self._export_discharge_point() + self._check_for_stop() + + logger.info("Exporting TWW.special_structure -> ABWASSER.spezialbauwerk") + self._export_special_structure() + self._check_for_stop() + + logger.info("Exporting TWW.infiltration_installation -> ABWASSER.versickerungsanlage") + self._export_infiltration_installation() + self._check_for_stop() + + logger.info("Exporting TWW.pipe_profile -> ABWASSER.rohrprofil") + self._export_pipe_profile() + self._check_for_stop() + + logger.info("Exporting TWW.reach_point -> ABWASSER.haltungspunkt") + self._export_reach_point() + self._check_for_stop() + + logger.info("Exporting TWW.wastewater_node -> ABWASSER.abwasserknoten") + self._export_wastewater_node() + self._check_for_stop() + + logger.info("Exporting TWW.reach -> ABWASSER.haltung") + self._export_reach() + self._check_for_stop() + + logger.info( + "Exporting TWW.reach_progression_alternative -> ABWASSER.haltung_alternativverlauf" + ) + self._export_reach_progression_alternative() + self._check_for_stop() + + logger.info("Exporting TWW.dryweather_downspout -> ABWASSER.trockenwetterfallrohr") + self._export_dryweather_downspout() + self._check_for_stop() + + logger.info("Exporting TWW.access_aid -> ABWASSER.einstiegshilfe") + self._export_access_aid() + self._check_for_stop() + + logger.info("Exporting TWW.dryweather_flume -> ABWASSER.trockenwetterrinne") + self._export_dryweather_flume() + self._check_for_stop() + + logger.info("Exporting TWW.cover -> ABWASSER.deckel") + self._export_cover() + self._check_for_stop() + + logger.info("Exporting TWW.benching -> ABWASSER.bankett") + self._export_benching() + self._check_for_stop() + + logger.info("Exporting TWW.wastewater_structure_symbol -> ABWASSER.abwasserbauwerk_symbol") + self._export_wastewater_structure_symbol() + self._check_for_stop() + + logger.info("Exporting TWW.flushing_nozzle -> ABWASSER.spuelstutzen") + self._export_flushing_nozzle() + self._check_for_stop() + + def _export_dss(self): + logger.info( + "Exporting TWW.waste_water_treatment_plant -> ABWASSER.abwasserreinigungsanlage" + ) + self._export_waste_water_treatment_plant() + self._check_for_stop() + + logger.info("Exporting TWW.wwtp_energy_use -> ABWASSER.araenergienutzung") + self._export_wwtp_energy_use() + self._check_for_stop() + + logger.info("Exporting TWW.waste_water_treatment -> ABWASSER.abwasserbehandlung") + self._export_waste_water_treatment() + self._check_for_stop() + + logger.info("Exporting TWW.sludge_treatment -> ABWASSER.schlammbehandlung") + self._export_sludge_treatment() + self._check_for_stop() + + logger.info("Exporting TWW.wwtp_structure -> ABWASSER.arabauwerk") + self._export_wwtp_structure() + self._check_for_stop() + + logger.info("Exporting TWW.control_center -> ABWASSER.steuerungszentrale") + self._export_control_center() + self._check_for_stop() + + logger.info("Exporting TWW.drainless_toilet -> ABWASSER.Abflusslose_Toilette") + self._export_drainless_toilet() + self._check_for_stop() + + logger.info("Exporting TWW.throttle_shut_off_unit -> ABWASSER.Absperr_Drosselorgan") + self._export_throttle_shut_off_unit() + self._check_for_stop() + + logger.info("Exporting TWW.tank_emptying -> ABWASSER.Beckenentleerung") + self._export_tank_emptying() + self._check_for_stop() + + logger.info("Exporting TWW.tank_cleaning -> ABWASSER.Beckenreinigung") + self._export_tank_cleaning() + self._check_for_stop() + + logger.info("Exporting TWW.bio_ecol_assessment -> ABWASSER.Biol_oekol_Gesamtbeurteilung") + self._export_bio_ecol_assessment() + self._check_for_stop() + + logger.info("Exporting TWW.fountain -> ABWASSER.Brunnen") + self._export_fountain() + self._check_for_stop() + + logger.info("Exporting TWW.param_ca_general -> ABWASSER.EZG_PARAMETER_ALLG") + self._export_param_ca_general() + self._check_for_stop() + + logger.info("Exporting TWW.param_ca_mouse1 -> ABWASSER.EZG_PARAMETER_MOUSE1") + self._export_param_ca_mouse1() + self._check_for_stop() + + logger.info("Exporting TWW.individual_surface -> ABWASSER.Einzelflaeche") + self._export_individual_surface() + self._check_for_stop() + + logger.info("Exporting TWW.catchment_area -> ABWASSER.Einzugsgebiet") + self._export_catchment_area() + self._check_for_stop() + + logger.info("Exporting TWW.electric_equipment -> ABWASSER.ElektrischeEinrichtung") + self._export_electric_equipment() + self._check_for_stop() + + logger.info( + "Exporting TWW.electromechanical_equipment -> ABWASSER.ElektromechanischeAusruestung" + ) + self._export_electromechanical_equipment() + self._check_for_stop() + + logger.info("Exporting TWW.disposal -> ABWASSER.Entsorgung") + self._export_disposal() + self._check_for_stop() + + logger.info("Exporting TWW.drainage_system -> ABWASSER.Entwaesserungssystem") + self._export_drainage_system() + self._check_for_stop() + + logger.info("Exporting TWW.solids_retention -> ABWASSER.Feststoffrueckhalt") + self._export_solids_retention() + self._check_for_stop() + + logger.info("Exporting TWW.pump -> ABWASSER.FoerderAggregat") + self._export_pump() + self._check_for_stop() + + logger.info("Exporting TWW.building -> ABWASSER.Gebaeude") + self._export_building() + self._check_for_stop() + + logger.info("Exporting TWW.building_group -> ABWASSER.Gebaeudegruppe") + self._export_building_group() + self._check_for_stop() + + logger.info("Exporting TWW.building_group_baugwr -> ABWASSER.Gebaeudegruppe_BAUGWR") + self._export_building_group_baugwr() + self._check_for_stop() + + logger.info("Exporting TWW.catchment_area_totals -> ABWASSER.Gesamteinzugsgebiet") + self._export_catchment_area_totals() + self._check_for_stop() + + logger.info("Exporting TWW.hq_relation -> ABWASSER.HQ_Relation") + self._export_hq_relation() + self._check_for_stop() + + logger.info("Exporting TWW.hydr_geom_relation -> ABWASSER.Hydr_GeomRelation") + self._export_hydr_geom_relation() + self._check_for_stop() + + logger.info("Exporting TWW.hydr_geometry -> ABWASSER.Hydr_Geometrie") + self._export_hydr_geometry() + self._check_for_stop() + + logger.info("Exporting TWW.hydraulic_char_data -> ABWASSER.Hydr_Kennwerte") + self._export_hydraulic_char_data() + self._check_for_stop() + + logger.info("Exporting TWW.small_treatment_plant -> ABWASSER.KLARA") + self._export_small_treatment_plant() + self._check_for_stop() + + logger.info("Exporting TWW.farm -> ABWASSER.Landwirtschaftsbetrieb") + self._export_farm() + self._check_for_stop() + + logger.info("Exporting TWW.leapingweir -> ABWASSER.Leapingwehr") + self._export_leapingweir() + self._check_for_stop() + + logger.info("Exporting TWW.measure -> ABWASSER.Massnahme") + self._export_measure() + self._check_for_stop() + + logger.info("Exporting TWW.mechanical_pretreatment -> ABWASSER.MechanischeVorreinigung") + self._export_mechanical_pretreatment() + self._check_for_stop() + + logger.info("Exporting TWW.measuring_device -> ABWASSER.Messgeraet") + self._export_measuring_device() + self._check_for_stop() + + logger.info("Exporting TWW.measurement_series -> ABWASSER.Messreihe") + self._export_measurement_series() + self._check_for_stop() + + logger.info("Exporting TWW.measurement_result -> ABWASSER.Messresultat") + self._export_measurement_result() + self._check_for_stop() + + logger.info("Exporting TWW.measuring_point -> ABWASSER.Messstelle") + self._export_measuring_point() + self._check_for_stop() + + logger.info("Exporting TWW.mutation -> ABWASSER.Mutation") + self._export_mutation() + self._check_for_stop() + + logger.info("Exporting TWW.reservoir -> ABWASSER.Reservoir") + self._export_reservoir() + self._check_for_stop() + + logger.info("Exporting TWW.retention_body -> ABWASSER.Retentionskoerper") + self._export_retention_body() + self._check_for_stop() + + logger.info("Exporting TWW.profile_geometry -> ABWASSER.Rohrprofil_Geometrie") + self._export_profile_geometry() + self._check_for_stop() + + logger.info("Exporting TWW.backflow_prevention -> ABWASSER.Rueckstausicherung") + self._export_backflow_prevention() + self._check_for_stop() + + logger.info("Exporting TWW.log_card -> ABWASSER.Stammkarte") + self._export_log_card() + self._check_for_stop() + + logger.info("Exporting TWW.prank_weir -> ABWASSER.Streichwehr") + self._export_prank_weir() + self._check_for_stop() + + logger.info("Exporting TWW.overflow_char -> ABWASSER.Ueberlaufcharakteristik") + self._export_overflow_char() + self._check_for_stop() + + logger.info("Exporting TWW.maintenance -> ABWASSER.Unterhalt") + self._export_maintenance() + self._check_for_stop() + + logger.info("Exporting TWW.infiltration_zone -> ABWASSER.Versickerungsbereich") + self._export_infiltration_zone() + self._check_for_stop() + + logger.info( + "Exporting TWW.re_maintenance_event_wastewater_structure -> ABWASSER.erhaltungsereignis_abwasserbauwerkassoc" + ) + self._export_re_maintenance_event_wastewater_structure() + self._check_for_stop() + + logger.info( + "Exporting TWW.re_building_group_disposal -> ABWASSER.gebaeudegruppe_entsorgungassoc" + ) + self._export_re_building_group_disposal() + self._check_for_stop() + + def _export_vsa_kek(self): + logger.info("Exporting TWW.examination -> ABWASSER.untersuchung") + self._export_examination() + self._check_for_stop() + + logger.info("Exporting TWW.damage_manhole -> ABWASSER.normschachtschaden") + self._export_damage_manhole() + self._check_for_stop() + + logger.info("Exporting TWW.damage_channel -> ABWASSER.kanalschaden") + self._export_damage_channel() + self._check_for_stop() + + logger.info("Exporting TWW.data_media -> ABWASSER.datentraeger") + self._export_data_media() + self._check_for_stop() + + logger.info("Exporting TWW.file -> ABWASSER.datei") + self._export_file() + self._check_for_stop() + + def _export_organisation(self): + query = self.tww_session.query(self.model_classes_tww_od.organisation) + for row in query: + organisation = self.model_classes_interlis.organisation( + # FIELDS TO MAP TO ABWASSER.organisation + # --- sia405_baseclass --- + **self.sia_405_base_common(row, "organisation"), + # --- organisation --- + auid=row.uid, + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 255), + bezeichnung=self.null_to_emptystr(row.identifier), + kurzbezeichnung=row.identifier_short, + organisationstyp=self.get_vl(row.organisation_type__REL), + astatus=self.get_vl(row.status__REL), + ) + self.abwasser_session.add(organisation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_channel(self): + query = self.tww_session.query(self.model_classes_tww_od.channel) + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + kanal = self.model_classes_interlis.kanal( + # FIELDS TO MAP TO ABWASSER.kanal + # --- abwasserbauwerk --- + **self.wastewater_structure_common(row, "kanal"), + # --- kanal --- + bettung_umhuellung=self.get_vl(row.bedding_encasement__REL), + funktionhierarchisch=self.get_vl(row.function_hierarchic__REL), + funktionhydraulisch=self.get_vl(row.function_hydraulic__REL), + nutzungsart_geplant=self.get_vl(row.usage_planned__REL), + nutzungsart_ist=self.get_vl(row.usage_current__REL), + rohrlaenge=row.pipe_length, + spuelintervall=row.jetting_interval, + verbindungsart=self.get_vl(row.connection_type__REL), + ) + self.abwasser_session.add(kanal) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_manhole(self): + query = self.tww_session.query(self.model_classes_tww_od.manhole) + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + normschacht = self.model_classes_interlis.normschacht( + # --- abwasserbauwerk --- + **self.wastewater_structure_common(row, "normschacht"), + # --- normschacht --- + dimension1=row.dimension1, + dimension2=row.dimension2, + funktion=self.get_vl(row.function__REL), + material=self.get_vl(row.material__REL), + oberflaechenzulauf=self.get_vl(row.surface_inflow__REL), + ) + self.abwasser_session.add(normschacht) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_discharge_point(self): + query = self.tww_session.query(self.model_classes_tww_od.discharge_point) + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + einleitstelle = self.model_classes_interlis.einleitstelle( + # --- abwasserbauwerk --- + **self.wastewater_structure_common(row, "einleitstelle"), + # --- einleitstelle --- + hochwasserkote=row.highwater_level, + relevanz=self.get_vl(row.relevance__REL), + terrainkote=row.terrain_level, + wasserspiegel_hydraulik=row.waterlevel_hydraulic, + ) + self.abwasser_session.add(einleitstelle) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_special_structure(self): + query = self.tww_session.query(self.model_classes_tww_od.special_structure) + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + logger.warning( + "TWW field special_structure.upper_elevation has no equivalent in the interlis model. It will be ignored." + ) + spezialbauwerk = self.model_classes_interlis.spezialbauwerk( + # FIELDS TO MAP TO ABWASSER.spezialbauwerk + # --- abwasserbauwerk --- + **self.wastewater_structure_common(row, "spezialbauwerk"), + # --- spezialbauwerk --- + # TODO : WARNING : upper_elevation is not mapped + bypass=self.get_vl(row.bypass__REL), + funktion=self.get_vl(row.function__REL), + notueberlauf=self.get_vl(row.emergency_overflow__REL), + regenbecken_anordnung=self.get_vl(row.stormwater_tank_arrangement__REL), + ) + self.abwasser_session.add(spezialbauwerk) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_infiltration_installation(self): + query = self.tww_session.query(self.model_classes_tww_od.infiltration_installation) + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + logger.warning( + "TWW field infiltration_installation.upper_elevation has no equivalent in the interlis model. It will be ignored." + ) + versickerungsanlage = self.model_classes_interlis.versickerungsanlage( + # FIELDS TO MAP TO ABWASSER.versickerungsanlage + # --- abwasserbauwerk --- + **self.wastewater_structure_common(row, "versickerungsanlage"), + # --- versickerungsanlage --- + # TODO : NOT MAPPED : upper_elevation + art=self.get_vl(row.kind__REL), + beschriftung=self.get_vl(row.labeling__REL), + dimension1=row.dimension1, + dimension2=row.dimension2, + gwdistanz=row.distance_to_aquifer, + maengel=self.get_vl(row.defects__REL), + notueberlauf=self.get_vl(row.emergency_overflow__REL), + saugwagen=self.get_vl(row.vehicle_access__REL), + schluckvermoegen=row.absorption_capacity, + versickerungswasser=self.get_vl(row.seepage_utilization__REL), + wasserdichtheit=self.get_vl(row.watertightness__REL), + wirksameflaeche=row.effective_area, + ) + self.abwasser_session.add(versickerungsanlage) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_pipe_profile(self): + query = self.tww_session.query(self.model_classes_tww_od.pipe_profile) + if self.filtered: + query = query.join(self.model_classes_tww_od.reach).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.pipe_profile + + # --- pipe_profile --- + # fk_dataowner, fk_provider, height_width_ratio, identifier, last_modification, obj_id, profile_type, remark + + # --- _bwrel_ --- + # profile_geometry__BWREL_fk_pipe_profile, reach__BWREL_fk_pipe_profile + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, profile_type__REL + + rohrprofil = self.model_classes_interlis.rohrprofil( + # FIELDS TO MAP TO ABWASSER.rohrprofil + # --- vsa_baseclass --- + **self.vsa_base_common(row, "rohrprofil"), + # --- rohrprofil --- + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 80), + bezeichnung=self.null_to_emptystr(row.identifier), + hoehenbreitenverhaeltnis=row.height_width_ratio, + profiltyp=self.get_vl(row.profile_type__REL), + ) + self.abwasser_session.add(rohrprofil) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_reach_point(self): + query = self.tww_session.query(self.model_classes_tww_od.reach_point) + if self.filtered: + query = query.join( + self.model_classes_tww_od.reach, + or_( + self.model_classes_tww_od.reach_point.obj_id + == self.model_classes_tww_od.reach.fk_reach_point_from, + self.model_classes_tww_od.reach_point.obj_id + == self.model_classes_tww_od.reach.fk_reach_point_to, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.reach_point + + # --- reach_point --- + # elevation_accuracy, fk_dataowner, fk_provider, fk_wastewater_networkelement, identifier, last_modification, level, obj_id, outlet_shape, position_of_connection, remark, situation_geometry + + # --- _bwrel_ --- + # examination__BWREL_fk_reach_point, reach__BWREL_fk_reach_point_from, reach__BWREL_fk_reach_point_to + + # --- _rel_ --- + # elevation_accuracy__REL, fk_dataowner__REL, fk_provider__REL, fk_wastewater_networkelement__REL, outlet_shape__REL + + haltungspunkt = self.model_classes_interlis.haltungspunkt( + # FIELDS TO MAP TO ABWASSER.haltungspunkt + # --- vsa_baseclass --- + **self.vsa_base_common(row, "haltungspunkt"), + # --- haltungspunkt --- + # changed call from get_tid to check_fk_in_subsetid so it does not write foreignkeys on elements that do not exist + abwassernetzelementref=self.check_fk_in_subsetid( + row.fk_wastewater_networkelement__REL + ), + auslaufform=self.get_vl(row.outlet_shape__REL), + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 80), + bezeichnung=self.null_to_emptystr(row.identifier), + hoehengenauigkeit=self.get_vl(row.elevation_accuracy__REL), + kote=row.level, + lage=ST_Force2D(row.situation3d_geometry), + lage_anschluss=row.position_of_connection, + ) + self.abwasser_session.add(haltungspunkt) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_wastewater_node(self): + query = self.tww_session.query(self.model_classes_tww_od.wastewater_node) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.wastewater_node + + # --- wastewater_networkelement --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark + + # --- wastewater_node --- + + # --- _bwrel_ --- + # catchment_area__BWREL_fk_wastewater_networkelement_rw_current, catchment_area__BWREL_fk_wastewater_networkelement_rw_planned, catchment_area__BWREL_fk_wastewater_networkelement_ww_current, catchment_area__BWREL_fk_wastewater_networkelement_ww_planned, connection_object__BWREL_fk_wastewater_networkelement, hydraulic_char_data__BWREL_fk_wastewater_node, overflow__BWREL_fk_overflow_to, overflow__BWREL_fk_wastewater_node, reach_point__BWREL_fk_wastewater_networkelement, throttle_shut_off_unit__BWREL_fk_wastewater_node, wastewater_structure__BWREL_fk_main_wastewater_node + + # --- _rel_ --- + # fk_dataowner__REL, fk_hydr_geometry__REL, fk_provider__REL, fk_wastewater_structure__REL + + logger.warning( + "TWW field wastewater_node.fk_hydr_geometry has no equivalent in the interlis model. It will be ignored." + ) + abwasserknoten = self.model_classes_interlis.abwasserknoten( + # FIELDS TO MAP TO ABWASSER.abwasserknoten + # --- abwassernetzelement --- + **self.wastewater_networkelement_common(row, "abwasserknoten"), + # --- abwasserknoten --- + # TODO : WARNING : fk_hydr_geometry is not mapped + lage=ST_Force2D(row.situation3d_geometry), + rueckstaukote_ist=row.backflow_level_current, + sohlenkote=row.bottom_level, + ) + self.abwasser_session.add(abwasserknoten) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_reach(self): + query = self.tww_session.query(self.model_classes_tww_od.reach) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.reach + + # --- wastewater_networkelement --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark + + # --- reach --- + # clear_height, coefficient_of_friction, elevation_determination, fk_pipe_profile, fk_reach_point_from, fk_reach_point_to, horizontal_positioning, inside_coating, length_effective, material, obj_id, progression3d_geometry, reliner_material, reliner_nominal_size, relining_construction, relining_kind, ring_stiffness, slope_building_plan, wall_roughness + + # --- _bwrel_ --- + # catchment_area__BWREL_fk_wastewater_networkelement_rw_current, catchment_area__BWREL_fk_wastewater_networkelement_rw_planned, catchment_area__BWREL_fk_wastewater_networkelement_ww_current, catchment_area__BWREL_fk_wastewater_networkelement_ww_planned, connection_object__BWREL_fk_wastewater_networkelement, reach_point__BWREL_fk_wastewater_networkelement, reach_text__BWREL_fk_reach, txt_text__BWREL_fk_reach + + # --- _rel_ --- + # elevation_determination__REL, fk_dataowner__REL, fk_pipe_profile__REL, fk_provider__REL, fk_reach_point_from__REL, fk_reach_point_to__REL, fk_wastewater_structure__REL, horizontal_positioning__REL, inside_coating__REL, material__REL, reliner_material__REL, relining_construction__REL, relining_kind__REL + + logger.warning( + "TWW field reach.elevation_determination has no equivalent in the interlis model. It will be ignored." + ) + haltung = self.model_classes_interlis.haltung( + # FIELDS TO MAP TO ABWASSER.haltung + # --- abwassernetzelement --- + **self.wastewater_networkelement_common(row, "haltung"), + # --- haltung --- + # NOT MAPPED : elevation_determination + innenschutz=self.get_vl(row.inside_coating__REL), + laengeeffektiv=row.length_effective, + lagebestimmung=self.get_vl(row.horizontal_positioning__REL), + lichte_hoehe=row.clear_height, + material=self.get_vl(row.material__REL), + nachhaltungspunktref=self.get_tid(row.fk_reach_point_to__REL), + plangefaelle=row.slope_building_plan, # TODO : check, does this need conversion ? + reibungsbeiwert=row.coefficient_of_friction, + reliner_art=self.get_vl(row.relining_kind__REL), + reliner_bautechnik=self.get_vl(row.relining_construction__REL), + reliner_material=self.get_vl(row.reliner_material__REL), + reliner_nennweite=row.reliner_nominal_size, + ringsteifigkeit=row.ring_stiffness, + rohrprofilref=self.get_tid(row.fk_pipe_profile__REL), + verlauf=ST_Force2D(row.progression3d_geometry), + vonhaltungspunktref=self.get_tid(row.fk_reach_point_from__REL), + wandrauhigkeit=row.wall_roughness, + ) + self.abwasser_session.add(haltung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_reach_progression_alternative(self): + query = self.tww_session.query(self.model_classes_tww_od.reach_progression_alternative) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.reach_progression_alternative.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + haltung_alternativverlauf = self.model_classes_interlis.haltung_alternativverlauf( + **self.base_common(row, "haltung_alternativverlauf"), + # --- haltung_alternativverlauf --- + plantyp=self.get_vl(row.plantype__REL), + verlauf=row.progression_geometry, + haltungref=self.get_tid(row.fk_reach__REL), + ) + self.abwasser_session.add(haltung_alternativverlauf) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_dryweather_downspout(self): + query = self.tww_session.query(self.model_classes_tww_od.dryweather_downspout) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.dryweather_downspout + + # --- structure_part --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark, renovation_demand + + # --- dryweather_downspout --- + # diameter, obj_id + + # --- _bwrel_ --- + # access_aid_kind__BWREL_obj_id, backflow_prevention__BWREL_obj_id, benching_kind__BWREL_obj_id, dryweather_flume_material__BWREL_obj_id, electric_equipment__BWREL_obj_id, electromechanical_equipment__BWREL_obj_id, solids_retention__BWREL_obj_id, flushing_nozzle__BWREL_obj_id, tank_cleaning__BWREL_obj_id, tank_emptying__BWREL_obj_id + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, fk_wastewater_structure__REL, renovation_demand__REL + + trockenwetterfallrohr = self.model_classes_interlis.trockenwetterfallrohr( + # FIELDS TO MAP TO ABWASSER.trockenwetterfallrohr + # --- bauwerksteil --- + **self.structure_part_common(row, "trockenwetterfallrohr"), + # --- trockenwetterfallrohr --- + durchmesser=row.diameter, + ) + self.abwasser_session.add(trockenwetterfallrohr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_access_aid(self): + query = self.tww_session.query(self.model_classes_tww_od.access_aid) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.access_aid + + # --- structure_part --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark, renovation_demand + + # --- access_aid --- + # kind, obj_id + + # --- _bwrel_ --- + # access_aid_kind__BWREL_obj_id, backflow_prevention__BWREL_obj_id, benching_kind__BWREL_obj_id, dryweather_flume_material__BWREL_obj_id, electric_equipment__BWREL_obj_id, electromechanical_equipment__BWREL_obj_id, solids_retention__BWREL_obj_id, flushing_nozzle__BWREL_obj_id, tank_cleaning__BWREL_obj_id, tank_emptying__BWREL_obj_id + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, fk_wastewater_structure__REL, kind__REL, renovation_demand__REL + + einstiegshilfe = self.model_classes_interlis.einstiegshilfe( + # FIELDS TO MAP TO ABWASSER.einstiegshilfe + # --- bauwerksteil --- + **self.structure_part_common(row, "einstiegshilfe"), + # --- einstiegshilfe --- + art=self.get_vl(row.kind__REL), + ) + self.abwasser_session.add(einstiegshilfe) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_dryweather_flume(self): + query = self.tww_session.query(self.model_classes_tww_od.dryweather_flume) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.dryweather_flume + + # --- structure_part --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark, renovation_demand + + # --- dryweather_flume --- + # material, obj_id + + # --- _bwrel_ --- + # access_aid_kind__BWREL_obj_id, backflow_prevention__BWREL_obj_id, benching_kind__BWREL_obj_id, dryweather_flume_material__BWREL_obj_id, electric_equipment__BWREL_obj_id, electromechanical_equipment__BWREL_obj_id, solids_retention__BWREL_obj_id, flushing_nozzle__BWREL_obj_id, tank_cleaning__BWREL_obj_id, tank_emptying__BWREL_obj_id + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, fk_wastewater_structure__REL, material__REL, renovation_demand__REL + + trockenwetterrinne = self.model_classes_interlis.trockenwetterrinne( + # FIELDS TO MAP TO ABWASSER.trockenwetterrinne + # --- bauwerksteil --- + **self.structure_part_common(row, "trockenwetterrinne"), + # --- trockenwetterrinne --- + material=self.get_vl(row.material__REL), + ) + self.abwasser_session.add(trockenwetterrinne) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_cover(self): + query = self.tww_session.query(self.model_classes_tww_od.cover) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.cover + + # --- structure_part --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark, renovation_demand + + # --- cover --- + # brand, cover_shape, diameter, fastening, level, material, obj_id, positional_accuracy, situation3d_geometry, sludge_bucket, venting + + # --- _bwrel_ --- + # access_aid_kind__BWREL_obj_id, backflow_prevention__BWREL_obj_id, benching_kind__BWREL_obj_id, dryweather_flume_material__BWREL_obj_id, electric_equipment__BWREL_obj_id, electromechanical_equipment__BWREL_obj_id, solids_retention__BWREL_obj_id, flushing_nozzle__BWREL_obj_id, tank_cleaning__BWREL_obj_id, tank_emptying__BWREL_obj_id, wastewater_structure__BWREL_fk_main_cover + + # --- _rel_ --- + # cover_shape__REL, fastening__REL, fk_dataowner__REL, fk_provider__REL, fk_wastewater_structure__REL, material__REL, positional_accuracy__REL, renovation_demand__REL, sludge_bucket__REL, venting__REL + + deckel = self.model_classes_interlis.deckel( + # FIELDS TO MAP TO ABWASSER.deckel + # --- bauwerksteil --- + **self.structure_part_common(row, "deckel"), + # --- deckel --- + deckelform=self.get_vl(row.cover_shape__REL), + durchmesser=row.diameter, + entlueftung=self.get_vl(row.venting__REL), + fabrikat=row.brand, + kote=row.level, + lage=ST_Force2D(row.situation3d_geometry), + lagegenauigkeit=self.get_vl(row.positional_accuracy__REL), + material=self.get_vl(row.material__REL), + schlammeimer=self.get_vl(row.sludge_bucket__REL), + verschluss=self.get_vl(row.fastening__REL), + ) + self.abwasser_session.add(deckel) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_benching(self): + query = self.tww_session.query(self.model_classes_tww_od.benching) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.benching + + # --- structure_part --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark, renovation_demand + + # --- benching --- + # kind, obj_id + + # --- _bwrel_ --- + # access_aid_kind__BWREL_obj_id, backflow_prevention__BWREL_obj_id, benching_kind__BWREL_obj_id, dryweather_flume_material__BWREL_obj_id, electric_equipment__BWREL_obj_id, electromechanical_equipment__BWREL_obj_id, solids_retention__BWREL_obj_id, flushing_nozzle__BWREL_obj_id, tank_cleaning__BWREL_obj_id, tank_emptying__BWREL_obj_id + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, fk_wastewater_structure__REL, kind__REL, renovation_demand__REL + + bankett = self.model_classes_interlis.bankett( + # FIELDS TO MAP TO ABWASSER.bankett + # --- bauwerksteil --- + **self.structure_part_common(row, "bankett"), + # --- bankett --- + art=self.get_vl(row.kind__REL), + ) + self.abwasser_session.add(bankett) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_wastewater_structure_symbol(self): + query = self.tww_session.query(self.model_classes_tww_od.wastewater_structure_symbol) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + abwasserbauwerk_symbol = self.model_classes_interlis.abwasserbauwerk_symbol( + # FIELDS TO MAP TO ABWASSER.abwasserbauwerk_symbol + # --- abwasserbauwerk_symbol --- + **self.base_common(row, "abwasserbauwerk_symbol"), + plantyp=self.get_vl(row.plantype__REL), + symbolskalierunghoch=row.symbol_scaling_height, + symbolskalierunglaengs=row.symbol_scaling_width, + symbolori=row.symbolori, + symbolpos=row.symbolpos_geometry, + abwasserbauwerkref=self.get_tid(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(abwasserbauwerk_symbol) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_flushing_nozzle(self): + query = self.tww_session.query(self.model_classes_tww_od.flushing_nozzle) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + spuelstutzen = self.model_classes_interlis.spuelstutzen( + # FIELDS TO MAP TO ABWASSER.spuelstutzen + # --- bauwerksteil --- + **self.structure_part_common(row, "spuelstutzen"), + # --- spuelstutzen --- + lage=row.situation_geometry, + ) + self.abwasser_session.add(spuelstutzen) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_waste_water_treatment_plant(self): + query = self.tww_session.query(self.model_classes_tww_od.waste_water_treatment_plant) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.waste_water_treatment_plant.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + abwasserreinigungsanlage = self.model_classes_interlis.abwasserreinigungsanlage( + **self.vsa_base_common(row, "abwasserreinigungsanlage"), + # --- abwasserreinigungsanlage --- + perimeter=row.area_geometry, + bsb5=row.bod5, + csb=row.cod, + eliminationcsb=row.elimination_cod, + eliminationn=row.elimination_n, + eliminationnh4=row.elimination_nh4, + eliminationp=row.elimination_p, + bezeichnung=row.identifier, + art=row.kind, + nh4=row.nh4, + betreibertyp=self.get_vl(row.operator_type__REL), + einwohner_angeschlossen=row.population_connected, + einwohner_total=row.population_total, + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 255), + lage=row.situation_geometry, + inbetriebnahme=row.start_year, + ara_nr=row.wwtp_number, + ) + self.abwasser_session.add(abwasserreinigungsanlage) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_wwtp_energy_use(self): + query = self.tww_session.query(self.model_classes_tww_od.wwtp_energy_use) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.wwtp_energy_use.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + araenergienutzung = self.model_classes_interlis.araenergienutzung( + **self.vsa_base_common(row, "araenergienutzung"), + # --- araenergienutzung --- + gasmotor=row.gas_motor, + waermepumpe=row.heat_pump, + bezeichnung=row.identifier, + bemerkung=row.remark, + turbinierung=row.turbining, + abwasserreinigungsanlageref=self.get_tid(row.fk_waste_water_treatment_plant__REL), + ) + self.abwasser_session.add(araenergienutzung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_waste_water_treatment(self): + query = self.tww_session.query(self.model_classes_tww_od.waste_water_treatment) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.waste_water_treatment.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + abwasserbehandlung = self.model_classes_interlis.abwasserbehandlung( + **self.vsa_base_common(row, "abwasserbehandlung"), + # --- abwasserbehandlung --- + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + abwasserreinigungsanlageref=self.get_tid(row.fk_waste_water_treatment_plant__REL), + ) + self.abwasser_session.add(abwasserbehandlung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_sludge_treatment(self): + query = self.tww_session.query(self.model_classes_tww_od.sludge_treatment) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.sludge_treatment.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + schlammbehandlung = self.model_classes_interlis.schlammbehandlung( + **self.vsa_base_common(row, "schlammbehandlung"), + # --- schlammbehandlung --- + kompostierung=row.composting, + entwaesserung=row.dehydration, + faulschlammverbrennung=row.digested_sludge_combustion, + trocknung=row.drying, + frischschlammverbrennung=row.fresh_sludge_combustion, + hygienisierung=row.hygenisation, + bezeichnung=row.identifier, + ueberschusschlammvoreindickung=row.predensification_of_excess_sludge, + mischschlammvoreindickung=row.predensification_of_mixed_sludge, + primaerschlammvoreindickung=row.predensification_of_primary_sludge, + bemerkung=row.remark, + stabilisierung=self.get_vl(row.stabilisation__REL), + entwaessertklaerschlammstapelung=row.stacking_of_dehydrated_sludge, + fluessigklaerschlammstapelung=row.stacking_of_liquid_sludge, + abwasserreinigungsanlageref=self.get_tid(row.fk_waste_water_treatment_plant__REL), + ) + self.abwasser_session.add(schlammbehandlung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_wwtp_structure(self): + query = self.tww_session.query(self.model_classes_tww_od.wwtp_structure) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + arabauwerk = self.model_classes_interlis.arabauwerk( + # --- bauwerksteil --- + **self.wastewater_structure_common(row, "arabauwerk"), + # --- arabauwerk --- + art=self.get_vl(row.kind__REL), + abwasserreinigungsanlageref=self.get_tid(row.fk_waste_water_treatment_plant__REL), + ) + self.abwasser_session.add(arabauwerk) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_control_center(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.join( + self.model_classes_tww_od.throttle_shut_off_unit, + self.model_classes_tww_od.wastewater_node, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + steuerungszentrale = self.model_classes_interlis.steuerungszentrale( + **self.vsa_base_common(row, "steuerungszentrale"), + # --- steuerungszentrale --- + bezeichnung=row.identifier, + lage=row.situation_geometry, + ) + self.abwasser_session.add(steuerungszentrale) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_drainless_toilet(self): + query = self.tww_session.query(self.model_classes_tww_od.drainless_toilet) + # subclass of wastewater_structure - therefore same as eg. manhole + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + abflusslose_toilette = self.model_classes_interlis.abflusslose_toilette( + **self.wastewater_structure_common(row, "abflusslose_toilette"), + # --- drainless_toilet --- + art=self.get_vl(row.kind__REL), + ) + self.abwasser_session.add(abflusslose_toilette) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_throttle_shut_off_unit(self): + query = self.tww_session.query(self.model_classes_tww_od.throttle_shut_off_unit) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_node, + or_( + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.throttle_shut_off_unit.fk_wastewater_node, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + absperr_drosselorgan = self.model_classes_interlis.absperr_drosselorgan( + **self.vsa_base_common(row, "absperr_drosselorgan"), + # --- throttle_shut_off_unit --- + antrieb=self.get_vl(row.actuation__REL), + verstellbarkeit=self.get_vl(row.adjustability__REL), + steuerung=self.get_vl(row.control__REL), + querschnitt=row.cross_section, + wirksamer_qs=row.effective_cross_section, + bruttokosten=row.gross_costs, + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + fabrikat=row.manufacturer, + bemerkung=row.remark, + signaluebermittlung=self.get_vl(row.signal_transmission__REL), + subventionen=row.subsidies, + drosselorgan_oeffnung_ist=row.throttle_unit_opening_current, + drosselorgan_oeffnung_ist_optimiert=row.throttle_unit_opening_current_optimized, + abwasserknotenref=self.get_tid(row.fk_wastewater_node__REL), + steuerungszentraleref=self.get_tid(row.fk_control_center__REL), + ueberlaufref=self.get_tid(row.fk_overflow__REL), + ) + self.abwasser_session.add(absperr_drosselorgan) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_tank_emptying(self): + query = self.tww_session.query(self.model_classes_tww_od.tank_emptying) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + beckenentleerung = self.model_classes_interlis.beckenentleerung( + **self.structure_part_common(row, "beckenentleerung"), + # --- tank_emptying --- + leistung=row.flow, + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + absperr_drosselorganref=self.get_tid(row.fk_throttle_shut_off_unit__REL), + ueberlaufref=self.get_tid(row.fk_overflow__REL), + ) + self.abwasser_session.add(beckenentleerung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_tank_cleaning(self): + query = self.tww_session.query(self.model_classes_tww_od.tank_cleaning) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + beckenreinigung = self.model_classes_interlis.beckenreinigung( + **self.structure_part_common(row, "beckenreinigung"), + # --- tank_cleaning --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(beckenreinigung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_bio_ecol_assessment(self): + query = self.tww_session.query(self.model_classes_tww_od.bio_ecol_assessment) + if self.filtered: + query = ( + query.join(self.model_classes_tww_od.re_maintenance_event_wastewater_structure) + .join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + biol_oekol_gesamtbeurteilung = self.model_classes_interlis.biol_oekol_gesamtbeurteilung( + **self.maintenance_event_common(row, "biol_oekol_gesamtbeurteilung"), + # --- bio_ecol_assessment --- + vergleich_letzte_untersuchung=self.get_vl(row.comparison_last__REL), + datum_letzte_untersuchung=row.date_last_examen, + einfluss_hilfsindikatoren=self.get_vl(row.impact_auxiliary_indic__REL), + einfluss_aeusserer_aspekt=self.get_vl(row.impact_external_aspect__REL), + einfluss_makroinvertebraten=self.get_vl(row.impact_macroinvertebrates__REL), + einfluss_wasserpflanzen=self.get_vl(row.impact_water_plants__REL), + handlungsbedarf=self.get_vl(row.intervention_demand__REL), + immissionsorientierte_berechnung=self.get_vl(row.io_calculation__REL), + auslaufrohr_lichte_hoehe=row.outlet_pipe_clear_height, + q347=row.q347, + relevanzmatrix=self.get_vl(row.relevance_matrix__REL), + relevantes_gefaelle=row.relevant_slope, + oberflaechengewaesser=row.surface_water_bodies, + gewaesserart=self.get_vl(row.kind_water_body__REL), + gewaesserspezifische_entlastungsfracht_nh4_n_ist=row.water_specific_discharge_freight_nh4_n_current, + gewaesserspezifische_entlastungsfracht_nh4_n_ist_optimiert=row.water_specific_discharge_freight_nh4_n_current_opt, + gewaesserspezifische_entlastungsfracht_nh4_n_geplant=row.water_specific_discharge_freight_nh4_n_planned, + ) + self.abwasser_session.add(biol_oekol_gesamtbeurteilung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_fountain(self): + query = self.tww_session.query(self.model_classes_tww_od.fountain) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + brunnen = self.model_classes_interlis.brunnen( + **self.connection_object_common(row, "brunnen"), + # --- fountain --- + standortname=row.location_name, + lage=row.situation_geometry, + ) + self.abwasser_session.add(brunnen) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_param_ca_general(self): + query = self.tww_session.query(self.model_classes_tww_od.param_ca_general) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.param_ca_general.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + ezg_parameter_allg = self.model_classes_interlis.ezg_parameter_allg( + **self.surface_runoff_parameters_common(row, "ezg_parameter_allg"), + # --- param_ca_general --- + trockenwetteranfall=row.dry_wheather_flow, + fliessweglaenge=row.flow_path_length, + fliessweggefaelle=row.flow_path_slope, + einwohnergleichwert=row.population_equivalent, + flaeche=row.surface_ca, + ) + self.abwasser_session.add(ezg_parameter_allg) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_param_ca_mouse1(self): + query = self.tww_session.query(self.model_classes_tww_od.param_ca_mouse1) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.param_ca_mouse1.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + ezg_parameter_mouse1 = self.model_classes_interlis.ezg_parameter_mouse1( + **self.surface_runoff_parameters_common(row, "ezg_parameter_mouse1"), + # --- param_ca_mouse1 --- + trockenwetteranfall=row.dry_wheather_flow, + fliessweglaenge=row.flow_path_length, + fliessweggefaelle=row.flow_path_slope, + einwohnergleichwert=row.population_equivalent, + flaeche=row.surface_ca_mouse, + nutzungsart=row.usage, + ) + self.abwasser_session.add(ezg_parameter_mouse1) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_individual_surface(self): + query = self.tww_session.query(self.model_classes_tww_od.individual_surface) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + einzelflaeche = self.model_classes_interlis.einzelflaeche( + **self.connection_object_common(row, "einzelflaeche"), + # --- individual_surface --- + funktion=self.get_vl(row.function__REL), + neigung=row.inclination, + befestigung=self.get_vl(row.pavement__REL), + perimeter=row.perimeter_geometry, + ) + self.abwasser_session.add(einzelflaeche) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_catchment_area(self): + query = self.tww_session.query(self.model_classes_tww_od.catchment_area) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_networkelement, + or_( + self.model_classes_tww_od.wastewater_networkelement.obj_id + == self.model_classes_tww_od.catchment_area.fk_wastewater_networkelement_rw_planned, + self.model_classes_tww_od.wastewater_networkelement.obj_id + == self.model_classes_tww_od.catchment_area.fk_wastewater_networkelement_rw_current, + self.model_classes_tww_od.wastewater_networkelement.obj_id + == self.model_classes_tww_od.catchment_area.fk_wastewater_networkelement_ww_planned, + self.model_classes_tww_od.wastewater_networkelement.obj_id + == self.model_classes_tww_od.catchment_area.fk_wastewater_networkelement_ww_current, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + einzugsgebiet = self.model_classes_interlis.einzugsgebiet( + **self.vsa_base_common(row, "einzugsgebiet"), + # --- catchment_area --- + direkteinleitung_in_gewaesser_ist=self.get_vl(row.direct_discharge_current__REL), + direkteinleitung_in_gewaesser_geplant=self.get_vl( + row.direct_discharge_planned__REL + ), + abflussbeiwert_rw_ist=row.discharge_coefficient_rw_current, + abflussbeiwert_rw_geplant=row.discharge_coefficient_rw_planned, + abflussbeiwert_sw_ist=row.discharge_coefficient_ww_current, + abflussbeiwert_sw_geplant=row.discharge_coefficient_ww_planned, + entwaesserungssystem_ist=self.get_vl(row.drainage_system_current__REL), + entwaesserungssystem_geplant=self.get_vl(row.drainage_system_planned__REL), + bezeichnung=row.identifier, + versickerung_ist=self.get_vl(row.infiltration_current__REL), + versickerung_geplant=self.get_vl(row.infiltration_planned__REL), + perimeter=row.perimeter_geometry, + einwohnerdichte_ist=row.population_density_current, + einwohnerdichte_geplant=row.population_density_planned, + bemerkung=row.remark, + retention_ist=self.get_vl(row.retention_current__REL), + retention_geplant=self.get_vl(row.retention_planned__REL), + abflussbegrenzung_ist=row.runoff_limit_current, + abflussbegrenzung_geplant=row.runoff_limit_planned, + befestigungsgrad_rw_ist=row.seal_factor_rw_current, + befestigungsgrad_rw_geplant=row.seal_factor_rw_planned, + befestigungsgrad_sw_ist=row.seal_factor_ww_current, + befestigungsgrad_sw_geplant=row.seal_factor_ww_planned, + fremdwasseranfall_ist=row.sewer_infiltration_water_production_current, + fremdwasseranfall_geplant=row.sewer_infiltration_water_production_planned, + flaeche=row.surface_area, + schmutzabwasseranfall_ist=row.waste_water_production_current, + schmutzabwasseranfall_geplant=row.waste_water_production_planned, + # changed call from get_tid to check_fk_in_subsetid so it does not write foreignkeys on elements that do not exist + abwassernetzelement_rw_geplantref=self.check_fk_in_subsetid( + row.fk_wastewater_networkelement_rw_planned__REL + ), + abwassernetzelement_rw_istref=self.check_fk_in_subsetid( + row.fk_wastewater_networkelement_rw_current__REL + ), + abwassernetzelement_sw_geplantref=self.check_fk_in_subsetid( + row.fk_wastewater_networkelement_ww_planned__REL + ), + abwassernetzelement_sw_istref=self.check_fk_in_subsetid( + row.fk_wastewater_networkelement_ww_current__REL + ), + sbw_rw_geplantref=self.get_tid(row.fk_special_building_rw_planned__REL), + sbw_rw_istref=self.get_tid(row.fk_special_building_rw_current__REL), + sbw_sw_geplantref=self.get_tid(row.fk_special_building_ww_planned__REL), + sbw_sw_istref=self.get_tid(row.fk_special_building_ww_current__REL), + ) + self.abwasser_session.add(einzugsgebiet) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_electric_equipment(self): + query = self.tww_session.query(self.model_classes_tww_od.electric_equipment) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + elektrischeeinrichtung = self.model_classes_interlis.elektrischeeinrichtung( + **self.structure_part_common(row, "elektrischeeinrichtung"), + # --- electric_equipment --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(elektrischeeinrichtung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_electromechanical_equipment(self): + query = self.tww_session.query(self.model_classes_tww_od.electromechanical_equipment) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + elektromechanischeausruestung = self.model_classes_interlis.elektromechanischeausruestung( + **self.structure_part_common(row, "elektromechanischeausruestung"), + # --- electromechanical_equipment --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(elektromechanischeausruestung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_disposal(self): + query = self.tww_session.query(self.model_classes_tww_od.disposal) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter(self.model_classes_tww_od.disposal.obj_id.in_(self.subset_ids)) + logger.info(f"Selection query: {query.statement}") + for row in query: + entsorgung = self.model_classes_interlis.entsorgung( + **self.vsa_base_common(row, "entsorgung"), + # --- disposal --- + entsorgungsintervall_ist=row.disposal_interval_current, + entsorgungsintervall_soll=row.disposal_interval_nominal, + entsorgungsort_ist=self.get_vl(row.disposal_place_current__REL), + entsorgungsort_geplant=self.get_vl(row.disposal_place_planned__REL), + volumenabflusslosegrube=row.volume_pit_without_drain, + versickerungsanlageref=self.get_tid(row.fk_infiltration_installation__REL), + einleitstelleref=self.get_tid(row.fk_discharge_point__REL), + abwasserbauwerkref=self.get_tid(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(entsorgung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_drainage_system(self): + query = self.tww_session.query(self.model_classes_tww_od.drainage_system) + # no connection to sewer network - selected obj_id for drainage_system have to be added specifically + if self.filtered: + query = query.filter( + self.model_classes_tww_od.drainage_system.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + entwaesserungssystem = self.model_classes_interlis.entwaesserungssystem( + **self.zone_common(row, "entwaesserungssystem"), + # --- drainage_system --- + art=self.get_vl(row.kind__REL), + perimeter=row.perimeter_geometry, + ) + self.abwasser_session.add(entwaesserungssystem) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_solids_retention(self): + query = self.tww_session.query(self.model_classes_tww_od.solids_retention) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + feststoffrueckhalt = self.model_classes_interlis.feststoffrueckhalt( + **self.structure_part_common(row, "feststoffrueckhalt"), + # --- solids_retention --- + dimensionierungswert=row.dimensioning_value, + bruttokosten=row.gross_costs, + anspringkote=row.overflow_level, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(feststoffrueckhalt) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_pump(self): + query = self.tww_session.query(self.model_classes_tww_od.pump) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_node, + or_( + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.prank_weir.fk_wastewater_node, + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.prank_weir.fk_overflow_to, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + foerderaggregat = self.model_classes_interlis.foerderaggregat( + **self.overflow_common(row, "foerderaggregat"), + # --- pump --- + bauart=self.get_vl(row.construction_type__REL), + arbeitspunkt=row.operating_point, + aufstellungantrieb=self.get_vl(row.placement_of_actuation__REL), + aufstellungfoerderaggregat=self.get_vl(row.placement_of_pump__REL), + foerderstrommax_einzel=row.pump_flow_max_single, + foerderstrommin_einzel=row.pump_flow_min_single, + kotestart=row.start_level, + kotestop=row.stop_level, + ) + self.abwasser_session.add(foerderaggregat) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_building(self): + query = self.tww_session.query(self.model_classes_tww_od.building) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + gebaeude = self.model_classes_interlis.gebaeude( + **self.connection_object_common(row, "gebaeude"), + # --- building --- + hausnummer=row.house_number, + standortname=row.location_name, + perimeter=row.perimeter_geometry, + referenzpunkt=row.reference_point_geometry, + ) + self.abwasser_session.add(gebaeude) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_building_group(self): + query = self.tww_session.query(self.model_classes_tww_od.building_group) + if self.filtered: + query = query.join( + self.model_classes_tww_od.re_building_group_disposal, + self.model_classes_tww_od.disposal, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + gebaeudegruppe = self.model_classes_interlis.gebaeudegruppe( + **self.vsa_base_common(row, "gebaeudegruppe"), + # --- building_group --- + kinositzplaetze=row.movie_theater_seats, + kirchesitzplaetze=row.church_seats, + campingflaeche=row.camping_area, + campinguebernachtungen=row.camping_lodgings, + anschlusspflicht=self.get_vl(row.connecting_obligation__REL), + anschlussara=self.get_vl(row.connection_wwtp__REL), + gewerbebeschaeftigte=row.craft_employees, + schlafsaalbetten=row.dorm_beds, + schlafsaaluebernachtungen=row.dorm_overnight_stays, + entwaesserungsplan=self.get_vl(row.drainage_map__REL), + trinkwassernetzanschluss=self.get_vl(row.drinking_water_network__REL), + trinkwasserandere=self.get_vl(row.drinking_water_others__REL), + stromanschluss=self.get_vl(row.electric_connection__REL), + veranstaltungbesucher=row.event_visitors, + funktion=self.get_vl(row.function__REL), + turnhalleflaeche=row.gym_area, + ferienuebernachtungen=row.holiday_accomodation, + spitalbetten=row.hospital_beds, + hotelbetten=row.hotel_beds, + hoteluebernachtungen=row.hotel_overnight_stays, + bezeichnung=row.identifier, + anderenutzungegw=row.other_usage_population_equivalent, + anderenutzungart=row.other_usage_type, + einwohnerwerte=row.population_equivalent, + bemerkung=row.remark, + sanierungsdatum=row.renovation_date, + sanierungsbedarf=self.get_vl(row.renovation_necessity__REL), + raststaettesitzplaetze=row.restaurant_seats, + restaurantsitzplaetze_saalgarten=row.restaurant_seats_hall_garden, + restaurantsitzplaetze_permanent=row.restaurant_seats_permanent, + sanierungskonzept=row.restructuring_concept, + schuleschueler=row.school_students, + lage=row.situation_geometry, + # entsorgungref=self.get_tid(row.fk_disposal__REL), # TODO check why not available + massnahmeref=self.get_tid(row.fk_measure__REL), + ) + self.abwasser_session.add(gebaeudegruppe) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_building_group_baugwr(self): + query = self.tww_session.query(self.model_classes_tww_od.building_group_baugwr) + if self.filtered: + query = query.join( + self.model_classes_tww_od.building_group, + self.model_classes_tww_od.re_building_group_disposal, + self.model_classes_tww_od.disposal, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + gebaeudegruppe_baugwr = self.model_classes_interlis.gebaeudegruppe_baugwr( + **self.vsa_base_common(row, "gebaeudegruppe_baugwr"), + # --- building_group_baugwr --- + egid=row.egid, + gebaeudegrupperef=self.get_tid(row.fk_building_group__REL), + ) + self.abwasser_session.add(gebaeudegruppe_baugwr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_catchment_area_totals(self): + query = self.tww_session.query(self.model_classes_tww_od.catchment_area_totals) + # only export catchment_area_totals if explicitly added + if self.filtered: + query = query.filter( + self.model_classes_tww_od.catchment_area_totals.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + gesamteinzugsgebiet = self.model_classes_interlis.gesamteinzugsgebiet( + **self.vsa_base_common(row, "gesamteinzugsgebiet"), + # --- catchment_area_totals --- + entlastungsfracht_nh4_n=row.discharge_freight_nh4_n, + entlastungsanteil_nh4_n=row.discharge_proportion_nh4_n, + bezeichnung=row.identifier, + einwohner=row.population, + einwohner_dim=row.population_dim, + fremdwasseranfall=row.sewer_infiltration_water, + flaeche=row.surface_area, + flaeche_dim=row.surface_dim, + flaeche_bef=row.surface_imp, + flaeche_bef_dim=row.surface_imp_dim, + flaeche_red=row.surface_red, + flaeche_red_dim=row.surface_red_dim, + schmutzabwasseranfall=row.waste_water_production, + # discharge_point might no be in selection - therefore use check_fk_in_subsetid instead of get_tid + einleitstelleref=self.check_fk_in_subsetid(row.fk_discharge_point__REL), + hydr_kennwerteref=self.get_tid(row.fk_hydraulic_char_data__REL), + ) + self.abwasser_session.add(gesamteinzugsgebiet) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hq_relation(self): + query = self.tww_session.query(self.model_classes_tww_od.hq_relation) + if self.filtered: + # just check if overflow_char exists, but no filter + query = query.join( + self.model_classes_tww_od.overflow_char, + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + hq_relation = self.model_classes_interlis.hq_relation( + **self.vsa_base_common(row, "hq_relation"), + # --- hq_relation --- + hoehe=row.altitude, + abfluss=row.flow, + zufluss=row.flow_from, + ueberlaufcharakteristikref=self.get_tid(row.fk_overflow_char__REL), + ) + self.abwasser_session.add(hq_relation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hydr_geom_relation(self): + query = self.tww_session.query(self.model_classes_tww_od.hydr_geom_relation) + if self.filtered: + # to do check if join is ok or left/right join is needed + query = query.join( + self.model_classes_tww_od.hydr_geometry, + self.model_classes_tww_od.wastewater_node, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + hydr_geomrelation = self.model_classes_interlis.hydr_geomrelation( + **self.vsa_base_common(row, "hydr_geomrelation"), + # --- hydr_geom_relation --- + wassertiefe=row.water_depth, + wasseroberflaeche=row.water_surface, + benetztequerschnittsflaeche=row.wet_cross_section_area, + hydr_geometrieref=self.get_tid(row.fk_hydr_geometry__REL), + ) + self.abwasser_session.add(hydr_geomrelation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hydr_geometry(self): + query = self.tww_session.query(self.model_classes_tww_od.hydr_geometry) + if self.filtered: + # to do check if join is ok or left/right join is needed + query = query.join( + self.model_classes_tww_od.wastewater_node, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + hydr_geometrie = self.model_classes_interlis.hydr_geometrie( + **self.vsa_base_common(row, "hydr_geometrie"), + # --- hydr_geometry --- + bezeichnung=row.identifier, + bemerkung=row.remark, + stauraum=row.storage_volume, + nutzinhalt_fangteil=row.usable_capacity_storage, + nutzinhalt_klaerteil=row.usable_capacity_treatment, + nutzinhalt=row.utilisable_capacity, + volumen_pumpensumpf=row.volume_pump_sump, + ) + self.abwasser_session.add(hydr_geometrie) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hydraulic_char_data(self): + query = self.tww_session.query(self.model_classes_tww_od.hydraulic_char_data) + if self.filtered: + # side fk_overflow_char not considered in filter query + query = query.join( + self.model_classes_tww_od.wastewater_node, + or_( + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.hydraulic_char_data.fk_wastewater_node, + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.hydraulic_char_data.fk_primary_direction, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + hydr_kennwerte = self.model_classes_interlis.hydr_kennwerte( + **self.vsa_base_common(row, "hydr_kennwerte"), + # --- hydraulic_char_data --- + qan=row.qon, + bemerkung=row.remark, + astatus=self.get_vl(row.status__REL), + aggregatezahl=row.aggregate_number, + foerderhoehe_geodaetisch=row.delivery_height_geodaetic, + bezeichnung=row.identifier, + springt_an=self.get_vl(row.is_overflowing__REL), + hauptwehrart=self.get_vl(row.main_weir_kind__REL), + mehrbelastung=row.overcharge, + ueberlaufdauer=row.overflow_duration, + ueberlauffracht=row.overflow_freight, + ueberlaufhaeufigkeit=row.overflow_frequency, + ueberlaufmenge=row.overflow_volume, + pumpenregime=self.get_vl(row.pump_characteristics__REL), + foerderstrommax=row.pump_flow_max, + foerderstrommin=row.pump_flow_min, + qab=row.q_discharge, + abwasserknotenref=self.get_tid(row.fk_wastewater_node__REL), + ueberlaufcharakteristikref=self.get_tid(row.fk_overflow_char__REL), + primaerrichtungref=self.get_tid(row.fk_primary_direction__REL), + ) + self.abwasser_session.add(hydr_kennwerte) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_small_treatment_plant(self): + query = self.tww_session.query(self.model_classes_tww_od.small_treatment_plant) + if self.filtered: + query = query.join(self.model_classes_tww_od.wastewater_networkelement).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + klara = self.model_classes_interlis.klara( + **self.wastewater_structure_common(row, "klara"), + # --- small_treatment_plant --- + bewilligungsnummer=row.approval_number, + funktion=self.get_vl(row.function__REL), + anlagenummer=row.installation_number, + fernueberwachung=self.get_vl(row.remote_monitoring__REL), + ) + self.abwasser_session.add(klara) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_farm(self): + query = self.tww_session.query(self.model_classes_tww_od.farm) + if self.filtered: + query = query.join( + self.model_classes_tww_od.building_group, + self.model_classes_tww_od.re_building_group_disposal, + self.model_classes_tww_od.disposal, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + landwirtschaftsbetrieb = self.model_classes_interlis.landwirtschaftsbetrieb( + **self.vsa_base_common(row, "landwirtschaftsbetrieb"), + # --- farm --- + nutzflaechelandwirtschaft=row.agriculture_arable_surface, + guellegrubebemerkung=row.cesspit_comment, + guellegrubevolumen=self.get_vl(row.cesspit_volume__REL), + guellegrubevolumen_ist=row.cesspit_volume_current, + guellegrubevolumen_soll=row.cesspit_volume_nominal, + guellegrubevolumen_sw_behandelt=row.cesspit_volume_ww_treated, + guellegrubebewilligungsjahr=row.cesspit_year_of_approval, + konformitaet=self.get_vl(row.conformity__REL), + fortbestand=self.get_vl(row.continuance__REL), + fortbestandbemerkung=row.continuance_comment, + mistplatzflaeche_ist=row.dung_heap_area_current, + mistplatzflaeche_soll=row.dung_heap_area_nominal, + bemerkung=row.remark, + hirtenhuettebemerkung=row.shepherds_hut_comment, + hirtenhuetteegw=row.shepherds_hut_population_equivalent, + hirtenhuetteabwasser=self.get_vl(row.shepherds_hut_wastewater__REL), + stallvieh=self.get_vl(row.stable_cattle__REL), + stallgrossvieheinheit_fremdvieh=row.stable_cattle_equivalent_other_cattle, + stallgrossvieheinheit_eigenesvieh=row.stable_cattle_equivalent_own_cattle, + gebaeudegrupperef=self.get_tid(row.fk_building_group__REL), + ) + self.abwasser_session.add(landwirtschaftsbetrieb) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_leapingweir(self): + query = self.tww_session.query(self.model_classes_tww_od.leapingweir) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_node, + or_( + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.leapingweir.fk_wastewater_node, + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.leapingweir.fk_overflow_to, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + leapingwehr = self.model_classes_interlis.leapingwehr( + **self.overflow_common(row, "leapingwehr"), + # --- leapingweir --- + laenge=row.length, + oeffnungsform=self.get_vl(row.opening_shape__REL), + breite=row.width, + ) + self.abwasser_session.add(leapingwehr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measure(self): + query = self.tww_session.query(self.model_classes_tww_od.measure) + # always export all measure, therefore no if self.filtered. Adding filter here needs further investigation + # if self.filtered: + # query = query.filter(self.model_classes_tww_od.measure.obj_id.in_(self.subset_ids)) + for row in query: + massnahme = self.model_classes_interlis.massnahme( + **self.vsa_base_common(row, "massnahme"), + # --- measure --- + datum_eingang=row.date_entry, + beschreibung=row.description, + kategorie=self.get_vl(row.category__REL), + bezeichnung=row.identifier, + handlungsbedarf=row.intervention_demand, + linie=row.line_geometry, + verweis=row.link, + perimeter=row.perimeter_geometry, + prioritaet=self.get_vl(row.priority__REL), + bemerkung=row.remark, + astatus=self.get_vl(row.status__REL), + symbolpos=row.symbolpos_geometry, + gesamtkosten=row.total_cost, + jahr_umsetzung_effektiv=row.year_implementation_effective, + jahr_umsetzung_geplant=row.year_implementation_planned, + traegerschaftref=self.get_tid(row.fk_responsible_entity__REL), + verantwortlich_ausloesungref=self.get_tid(row.fk_responsible_start__REL), + ) + self.abwasser_session.add(massnahme) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_mechanical_pretreatment(self): + query = self.tww_session.query(self.model_classes_tww_od.mechanical_pretreatment) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + mechanischevorreinigung = self.model_classes_interlis.mechanischevorreinigung( + **self.vsa_base_common(row, "mechanischevorreinigung"), + # --- mechanical_pretreatment --- + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + abwasserbauwerkref=self.get_tid(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(mechanischevorreinigung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measuring_device(self): + query = self.tww_session.query(self.model_classes_tww_od.measuring_device) + if self.filtered: + query = query.join( + self.model_classes_tww_od.measuring_point, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + messgeraet = self.model_classes_interlis.messgeraet( + **self.vsa_base_common(row, "messgeraet"), + # --- measuring_device --- + seriennummer=row.serial_number, + fabrikat=row.brand, + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + messstelleref=self.get_tid(row.fk_measuring_point__REL), + ) + self.abwasser_session.add(messgeraet) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measurement_series(self): + query = self.tww_session.query(self.model_classes_tww_od.measurement_series) + if self.filtered: + query = query.join( + self.model_classes_tww_od.measuring_point, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + messreihe = self.model_classes_interlis.messreihe( + **self.vsa_base_common(row, "messreihe"), + # --- measurement_series --- + dimension=row.dimension, + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + messstelleref=self.get_tid(row.fk_measuring_point__REL), + abwassernetzelementref=self.get_tid(row.fk_wastewater_networkelement__REL), + ) + self.abwasser_session.add(messreihe) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measurement_result(self): + query = self.tww_session.query(self.model_classes_tww_od.measurement_result) + if self.filtered: + query = query.join( + self.model_classes_tww_od.measurement_series, + self.model_classes_tww_od.measuring_point, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + messresultat = self.model_classes_interlis.messresultat( + **self.vsa_base_common(row, "messresultat"), + # --- measurement_result --- + bezeichnung=row.identifier, + messart=self.get_vl(row.measurement_type__REL), + messdauer=row.measuring_duration, + bemerkung=row.remark, + zeit=row.time, + wert=row.value, + messgeraetref=self.get_tid(row.fk_measuring_device__REL), + messreiheref=self.get_tid(row.fk_measurement_series__REL), + ) + self.abwasser_session.add(messresultat) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measuring_point(self): + query = self.tww_session.query(self.model_classes_tww_od.measuring_point) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ) + # only filter via wastewater_networkelement, union queries need further investigation + query = query.filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + messstelle = self.model_classes_interlis.messstelle( + **self.vsa_base_common(row, "messstelle"), + # --- measuring_point --- + # zweck is a valuelist + # zweck=row.purpose, + zweck=self.get_vl(row.purpose__REL), + bemerkung=row.remark, + # staukoerper is a valuelist + # staukoerper=row.damming_device, + staukoerper=self.get_vl(row.damming_device__REL), + bezeichnung=row.identifier, + # here art is not a value list + art=row.kind, + lage=row.situation_geometry, + betreiberref=self.get_tid(row.fk_operator__REL), + abwasserreinigungsanlageref=self.get_tid(row.fk_waste_water_treatment_plant__REL), + abwasserbauwerkref=self.get_tid(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(messstelle) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_mutation(self): + query = self.tww_session.query(self.model_classes_tww_od.mutation) + # only export explicitly specified mutation objects if filtered + if self.filtered: + query = query.filter(self.model_classes_tww_od.mutation.obj_id.in_(self.subset_ids)) + for row in query: + mutation = self.model_classes_interlis.mutation( + **self.vsa_base_common(row, "mutation"), + # --- mutation --- + attribut=row.attribute, + klasse=row.classname, + mutationsdatum=row.date_mutation, + aufnahmedatum=row.date_time, + art=self.get_vl(row.kind__REL), + letzter_wert=row.last_value, + objekt=row.object, + aufnehmer=row.recorded_by, + bemerkung=row.remark, + systembenutzer=row.user_system, + ) + self.abwasser_session.add(mutation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_reservoir(self): + query = self.tww_session.query(self.model_classes_tww_od.reservoir) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + reservoir = self.model_classes_interlis.reservoir( + **self.connection_object_common(row, "reservoir"), + # --- reservoir --- + standortname=row.location_name, + lage=row.situation_geometry, + ) + self.abwasser_session.add(reservoir) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_retention_body(self): + query = self.tww_session.query(self.model_classes_tww_od.retention_body) + if self.filtered: + query = query.join( + self.model_classes_tww_od.infiltration_installation, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + for row in query: + retentionskoerper = self.model_classes_interlis.retentionskoerper( + **self.vsa_base_common(row, "retentionskoerper"), + # --- retention_body --- + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + retention_volumen=row.volume, + versickerungsanlageref=self.get_tid(row.fk_infiltration_installation__REL), + ) + self.abwasser_session.add(retentionskoerper) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_profile_geometry(self): + query = self.tww_session.query(self.model_classes_tww_od.profile_geometry) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.profile_geometry.obj_id.in_(self.subset_ids) + ) + for row in query: + rohrprofil_geometrie = self.model_classes_interlis.rohrprofil_geometrie( + **self.vsa_base_common(row, "rohrprofil_geometrie"), + # --- profile_geometry --- + reihenfolge=row.sequence, + x=row.x, + y=row.y, + rohrprofilref=self.get_tid(row.fk_pipe_profile__REL), + ) + self.abwasser_session.add(rohrprofil_geometrie) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_backflow_prevention(self): + query = self.tww_session.query(self.model_classes_tww_od.backflow_prevention) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.backflow_prevention + + # --- structure_part --- + # fk_dataowner, fk_provider, fk_wastewater_structure, identifier, last_modification, remark, renovation_demand + + # --- backflow_prevention --- + # gross_costs, kind, obj_id, year_of_replacement + + # --- _bwrel_ --- + # access_aid_kind__BWREL_obj_id, backflow_prevention__BWREL_obj_id, benching_kind__BWREL_obj_id, dryweather_flume_material__BWREL_obj_id, electric_equipment__BWREL_obj_id, electromechanical_equipment__BWREL_obj_id, solids_retention__BWREL_obj_id, flushing_nozzle__BWREL_obj_id, tank_cleaning__BWREL_obj_id, tank_emptying__BWREL_obj_id + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, fk_wastewater_structure__REL, renovation_demand__REL, fk_throttle_shut_off_unit__REL, fk_pump__REL + + rueckstausicherung = self.model_classes_interlis.rueckstausicherung( + # FIELDS TO MAP TO ABWASSER.rueckstausicherung + # --- bauwerksteil --- + **self.structure_part_common(row, "rueckstausicherung"), + # --- backflow_prevention --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + absperr_drosselorganref=self.get_tid(row.fk_throttle_shut_off_unit__REL), + foerderaggregatref=self.get_tid(row.fk_pump__REL), + ) + self.abwasser_session.add(rueckstausicherung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_log_card(self): + query = self.tww_session.query(self.model_classes_tww_od.log_card) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_node, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + for row in query: + stammkarte = self.model_classes_interlis.stammkarte( + **self.vsa_base_common(row, "stammkarte"), + # --- log_card --- + steuerung_fernwirkung=self.get_vl(row.control_remote_control__REL), + informationsquelle=self.get_vl(row.information_source__REL), + sachbearbeiter=row.person_in_charge, + bemerkung=row.remark, + paa_knotenref=self.get_tid(row.fk_pwwf_wastewater_node__REL), + bueroref=self.get_tid(row.fk_agency__REL), + standortgemeinderef=self.get_tid(row.fk_location_municipality__REL), + ) + self.abwasser_session.add(stammkarte) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_prank_weir(self): + query = self.tww_session.query(self.model_classes_tww_od.prank_weir) + if self.filtered: + query = query.join( + self.model_classes_tww_od.wastewater_node, + or_( + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.prank_weir.fk_wastewater_node, + self.model_classes_tww_od.wastewater_node.obj_id + == self.model_classes_tww_od.prank_weir.fk_overflow_to, + ), + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + streichwehr = self.model_classes_interlis.streichwehr( + **self.overflow_common(row, "streichwehr"), + # --- prank_weir --- + hydrueberfalllaenge=row.hydraulic_overflow_length, + kotemax=row.level_max, + kotemin=row.level_min, + ueberfallkante=self.get_vl(row.weir_edge__REL), + wehr_art=self.get_vl(row.weir_kind__REL), + ) + self.abwasser_session.add(streichwehr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_overflow_char(self): + query = self.tww_session.query(self.model_classes_tww_od.overflow_char) + # always export all overflow_char datasets + if self.filtered: + logger.info(f"Selection query: {query.statement}") + for row in query: + ueberlaufcharakteristik = self.model_classes_interlis.ueberlaufcharakteristik( + **self.vsa_base_common(row, "ueberlaufcharakteristik"), + # --- overflow_char --- + bezeichnung=row.identifier, + kennlinie_typ=self.get_vl(row.kind_overflow_char__REL), + bemerkung=row.remark, + ) + self.abwasser_session.add(ueberlaufcharakteristik) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_maintenance(self): + query = self.tww_session.query(self.model_classes_tww_od.maintenance) + if self.filtered: + query = ( + query.join(self.model_classes_tww_od.re_maintenance_event_wastewater_structure) + .join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + unterhalt = self.model_classes_interlis.unterhalt( + **self.maintenance_event_common(row, "unterhalt"), + # --- maintenance --- + art=self.get_vl(row.kind__REL), + ) + self.abwasser_session.add(unterhalt) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_infiltration_zone(self): + query = self.tww_session.query(self.model_classes_tww_od.infiltration_zone) + # no connection to sewer network - selected obj_id for infiltration_zone have to be added specifically + if self.filtered: + query = query.filter( + self.model_classes_tww_od.infiltration_zone.obj_id.in_(self.subset_ids) + ) + for row in query: + versickerungsbereich = self.model_classes_interlis.versickerungsbereich( + **self.zone_common(row, "versickerungsbereich"), + # --- infiltration_zone --- + versickerungsmoeglichkeit=self.get_vl(row.infiltration_capacity__REL), + perimeter=row.perimeter_geometry, + ) + self.abwasser_session.add(versickerungsbereich) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_examination(self): + query = self.tww_session.query(self.model_classes_tww_od.examination) + if self.filtered: + query = ( + query.join(self.model_classes_tww_od.re_maintenance_event_wastewater_structure) + .join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + untersuchung = self.model_classes_interlis.untersuchung( + # --- baseclass --- + **self.vsa_base_common(row, "untersuchung"), + # --- erhaltungsereignis --- + astatus=self.get_vl(row.status__REL), + ausfuehrende_firmaref=self.get_tid(row.fk_operating_company__REL), + ausfuehrender=row.operator, + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 80), + bezeichnung=self.null_to_emptystr(row.identifier), + datengrundlage=row.base_data, + dauer=row.duration, + detaildaten=row.data_details, + ergebnis=row.result, + grund=row.reason, + kosten=row.cost, + zeitpunkt=row.time_point, + # --- untersuchung --- + bispunktbezeichnung=row.to_point_identifier, + erfassungsart=self.get_vl(row.recording_type__REL), + fahrzeug=row.vehicle, + geraet=row.equipment, + haltungspunktref=self.get_tid(row.fk_reach_point__REL), + inspizierte_laenge=row.inspected_length, + videonummer=row.videonumber, + vonpunktbezeichnung=row.from_point_identifier, + witterung=self.get_vl(row.weather__REL), + ) + self.abwasser_session.add(untersuchung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_damage_manhole(self): + query = self.tww_session.query(self.model_classes_tww_od.damage_manhole) + if self.filtered: + query = ( + query.join(self.model_classes_tww_od.examination) + .join(self.model_classes_tww_od.re_maintenance_event_wastewater_structure) + .join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + normschachtschaden = self.model_classes_interlis.normschachtschaden( + # FIELDS TO MAP TO ABWASSER.normschachtschaden + # --- baseclass --- + # --- sia405_baseclass --- + **self.vsa_base_common(row, "normschachtschaden"), + # --- schaden --- + anmerkung=row.comments, + ansichtsparameter=row.view_parameters, + untersuchungref=self.get_tid(row.fk_examination__REL), + verbindung=self.get_vl(row.connection__REL), + videozaehlerstand=row.video_counter, + # --- normschachtschaden --- + distanz=row.manhole_distance, + quantifizierung1=row.manhole_quantification1, + quantifizierung2=row.manhole_quantification2, + schachtbereich=self.get_vl(row.manhole_shaft_area__REL), + schachtschadencode=self.get_vl(row.manhole_damage_code__REL), + schadenlageanfang=row.manhole_damage_begin, + schadenlageende=row.manhole_damage_end, + ) + self.abwasser_session.add(normschachtschaden) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_damage_channel(self): + query = self.tww_session.query(self.model_classes_tww_od.damage_channel) + if self.filtered: + query = ( + query.join(self.model_classes_tww_od.examination) + .join(self.model_classes_tww_od.re_maintenance_event_wastewater_structure) + .join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + kanalschaden = self.model_classes_interlis.kanalschaden( + # FIELDS TO MAP TO ABWASSER.kanalschaden + # --- baseclass --- + # --- sia405_baseclass --- + **self.vsa_base_common(row, "kanalschaden"), + # --- schaden --- + anmerkung=row.comments, + ansichtsparameter=row.view_parameters, + einzelschadenklasse=self.get_vl(row.single_damage_class__REL), + streckenschaden=row.damage_reach, + untersuchungref=self.get_tid(row.fk_examination__REL), + verbindung=self.get_vl(row.connection__REL), + videozaehlerstand=row.video_counter, + # --- kanalschaden --- + distanz=row.channel_distance, + kanalschadencode=self.get_vl(row.channel_damage_code__REL), + quantifizierung1=row.channel_quantification1, + quantifizierung2=row.channel_quantification2, + schadenlageanfang=row.channel_damage_begin, + schadenlageende=row.channel_damage_end, + ) + self.abwasser_session.add(kanalschaden) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_data_media(self): + query = self.tww_session.query(self.model_classes_tww_od.data_media) + if self.filtered: + logger.info(f"Selection query: {query.statement}") + for row in query: + # AVAILABLE FIELDS IN TWW.data_media + + # --- data_media --- + # fk_dataowner, fk_provider, identifier, kind, last_modification, location, obj_id, path, remark + + # --- _rel_ --- + # fk_dataowner__REL, fk_provider__REL, kind__REL + + datentraeger = self.model_classes_interlis.datentraeger( + # FIELDS TO MAP TO ABWASSER.datentraeger + # --- vsa_baseclass --- + **self.vsa_base_common(row, "datentraeger"), + # --- datentraeger --- + art=self.get_vl(row.kind__REL), + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 80), + bezeichnung=self.null_to_emptystr(row.identifier), + pfad=row.path, + standort=row.location, + ) + self.abwasser_session.add(datentraeger) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_file(self): + query = self.tww_session.query(self.model_classes_tww_od.file) + if self.filtered: + query = ( + query.outerjoin( + self.model_classes_tww_od.damage, + self.model_classes_tww_od.file.object + == self.model_classes_tww_od.damage.obj_id, + ) + .join( + self.model_classes_tww_od.examination, + or_( + self.model_classes_tww_od.file.object + == self.model_classes_tww_od.damage.obj_id, + self.model_classes_tww_od.file.object + == self.model_classes_tww_od.examination.obj_id, + ), + ) + .join(self.model_classes_tww_od.re_maintenance_event_wastewater_structure) + .join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + datei = self.model_classes_interlis.datei( + # FIELDS TO MAP TO ABWASSER.datei + # --- vsa_baseclass --- + **self.vsa_base_common(row, "datei"), + # --- datei --- + art=self.get_vl(row.kind__REL) or "andere", + bemerkung=self.truncate(self.emptystr_to_null(row.remark), 80), + bezeichnung=self.null_to_emptystr(row.identifier), + datentraegerref=self.get_tid(row.fk_data_media__REL), + klasse=self.get_vl_by_code( + self.model_classes_tww_vl.file_classname, row.classname + ), + objekt=self.null_to_emptystr(row.object), + relativpfad=row.path_relative, + ) + self.abwasser_session.add(datei) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_re_maintenance_event_wastewater_structure(self): + query = self.tww_session.query( + self.model_classes_tww_od.re_maintenance_event_wastewater_structure + ) + if self.filtered: + query = ( + query.join(self.model_classes_tww_od.wastewater_structure) + .join(self.model_classes_tww_od.wastewater_networkelement) + .filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + + # Before exporting the relation object, check that it use one sublclass of maintenance_event + # supported by DSS + maintenance_event_obj_id = row.fk_maintenance_event + dss_supported = False + + subclass_object = ( + self.tww_session.query(self.model_classes_tww_od.maintenance) + .filter(self.model_classes_tww_od.maintenance.obj_id == maintenance_event_obj_id) + .first() + ) + if subclass_object is not None: + dss_supported = True + + subclass_object = ( + self.tww_session.query(self.model_classes_tww_od.bio_ecol_assessment) + .filter( + self.model_classes_tww_od.bio_ecol_assessment.obj_id + == maintenance_event_obj_id + ) + .first() + ) + if not dss_supported and subclass_object is not None: + dss_supported = True + + if not dss_supported: + continue + + erhaltungsereignis_abwasserbauwerkassoc = self.model_classes_interlis.erhaltungsereignis_abwasserbauwerkassoc( + # FIELDS TO MAP TO ABWASSER.erhaltungsereignis_abwasserbauwerkassoc + # this class does not inherit vsa_base_common + # --- erhaltungsereignis_abwasserbauwerkassoc --- + abwasserbauwerkref=self.get_tid(row.fk_wastewater_structure__REL), + erhaltungsereignis_abwasserbauwerkassocref=self.get_tid( + row.fk_maintenance_event__REL + ), + ) + self.abwasser_session.add(erhaltungsereignis_abwasserbauwerkassoc) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_re_building_group_disposal(self): + query = self.tww_session.query(self.model_classes_tww_od.re_building_group_disposal) + if self.filtered: + query = query.join( + self.model_classes_tww_od.disposal, + self.model_classes_tww_od.wastewater_structure, + self.model_classes_tww_od.wastewater_networkelement, + ).filter( + self.model_classes_tww_od.wastewater_networkelement.obj_id.in_(self.subset_ids) + ) + logger.info(f"Selection query: {query.statement}") + for row in query: + gebaeudegruppe_entsorgungassoc = self.model_classes_interlis.gebaeudegruppe_entsorgungassoc( + # FIELDS TO MAP TO ABWASSER.gebaeudegruppe_entsorgungassoc + # --- baseclass --- + # --- sia405_baseclass --- + # this class does not inherit vsa_base_common + # **self.vsa_base_common(row, "gebaeudegruppe_entsorgungassoc"), + # --- gebaeudegruppe_entsorgungassoc --- + entsorgungref=self.get_tid(row.fk_disposal__REL), + gebaeudegruppe_entsorgungassocref=self.get_tid(row.fk_building_group__REL), + ) + self.abwasser_session.add(gebaeudegruppe_entsorgungassoc) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def get_tid(self, relation): + """ + Makes a tid for a relation + """ + if relation is None: + return None + return self.tid_maker.tid_for_row(relation) + + def get_vl(self, relation): + """ + Gets a literal value from a value list relation + """ + if relation is None: + return None + elif relation.code == relation.vsacode: + return relation.value_de + elif self.use_vsacode: + # use vsacode instead of code + + vsacode_value_de = self.get_vl_by_code( + self.model_classes_tww_vl.value_list_base, relation.vsacode + ) + if vsacode_value_de is None: + logger.warning( + f"Code {relation.code}: Usage of vsacode returned none. Falling back to {relation.value_de}. This will probably cause validation errors", + ) + return relation.value_de + return vsacode_value_de + else: # value list extension for other type + return relation.value_de + + def get_vl_by_code(self, vl_table, vl_code): + instance = self.tww_session.query(vl_table).filter(vl_table.code == vl_code).first() + if instance is None: + logger.warning( + f'Could not find code `{vl_code}` in value list "{vl_table.__table__.schema}.{vl_table.__name__}". Setting to None instead.' + ) + return None + + return instance.value_de + + def null_to_emptystr(self, val): + """ + Converts nulls to blank strings and raises a warning + """ + if val is None: + logger.warning( + "A mandatory value was null. It will be cast to a blank string, and probably cause validation errors", + ) + val = "" + return val + + def emptystr_to_null(self, val): + """ + Converts blank strings to nulls and raises a warning + + This is needed as is seems ili2pg 4.4.6 crashes with emptystrings under certain circumstances (see https://github.com/TWW/tww2ili/issues/33) + """ + if val == "": + logger.warning( + "An empty string was converted to NULL, to workaround ili2pg issue. This should have no impact on output.", + ) + val = None + return val + + def truncate(self, val, max_length): + """ + Raises a warning if values gets truncated + """ + if val is None: + return None + if len(val) > max_length: + logger.warning(f"Value '{val}' exceeds expected length ({max_length})", stacklevel=2) + return val[0:max_length] + + def _modulo_angle(self, val): + """ + Returns an angle between 0 and 359.9 (for Orientierung in Base_d-20181005.ili) + """ + if val is None: + return None + + # add labels_orientation_offset + val = val + self.labels_orientation_offset + + val = val % 360.0 + if val > 359.9: + val = 0 + return val + + # def check_fk_in_subsetid (self, subset, relation): + def check_fk_in_subsetid(self, relation): + """ + checks, whether foreignkey is in the subset_ids - if yes it return the tid of the foreignkey, if no it will return None + """ + # first check for None, as is get_tid + if relation is None: + return None + + # only if self.filtered + if self.filtered: + # logger.info(f"check_fk_in_subsetid - Subset ID's '{self.subset}'") + logger.info(f"check_fk_in_subsetid - Subset ID's '{self.subset_ids}'") + # get the value of the fk_ attribute as str out of the relation to be able to check whether it is in the subset + fremdschluesselstr = getattr(relation, "obj_id") + logger.info(f"check_fk_in_subsetid - fremdschluesselstr '{fremdschluesselstr}'") + + # if fremdschluesselstr in self.subset: + if fremdschluesselstr in self.subset_ids: + logger.info(f"check_fk_in_subsetid - '{fremdschluesselstr}' is in subset ") + logger.info( + f"check_fk_in_subsetid - tid = '{self.tid_maker.tid_for_row(relation)}' " + ) + # return tid_maker.tid_for_row(relation) + return self.tid_maker.tid_for_row(relation) + else: + logger.info( + f"check_fk_in_subsetid - '{fremdschluesselstr}' is not in subset - replaced with None instead!" + ) + return None + else: + # Makes a tid for a relation, like in get_tid + return self.tid_maker.tid_for_row(relation) + logger.info( + f"check_fk_in_subsetid not filtered - give back tid = '{self.tid_maker.tid_for_row(relation)}'" + ) + + def get_oid_prefix(self, oid_table): + instance = self.tww_session.query(oid_table).filter(oid_table.active.is_(True)).first() + if instance is None: + logger.warning( + f'Could not find an active entry in table"{oid_table.__table__.schema}.{oid_table.__name__}". \ + Returning an empty string, which will lead to INTERLIS Errors. \ + Set the value that you want to use as prefix to \'active\' in table"{oid_table.__table__.schema}.{oid_table.__name__}" \ + to avoid this issue.' + ) + return "" + + return instance.prefix + + def base_common(self, row, type_name): + """ + Returns common attributes for base + """ + base = { + "t_ili_tid": row.obj_id, + "t_type": type_name, + "t_id": self.get_tid(row), + } + if self.current_basket: + base["t_basket"] = self.current_basket.t_id + + return base + + def sia_405_base_common(self, row, type_name): + return { + **self.base_common(row, type_name), + "letzte_aenderung": row.last_modification, + } + + def vsa_base_common(self, row, type_name): + """ + Returns common attributes for base + """ + datenherrref = self.get_tid(row.fk_dataowner__REL) + if datenherrref is None: + raise InterlisExporterToIntermediateSchemaError( + f"Invalid dataowner reference for object '{row.obj_id}' of type '{type_name}'" + ) + + datenlieferantref = self.get_tid(row.fk_provider__REL) + if datenlieferantref is None: + raise InterlisExporterToIntermediateSchemaError( + f"Invalid provider reference for object '{row.obj_id}' of type '{type_name}'" + ) + + return { + **self.sia_405_base_common(row, type_name), + "datenherrref": datenherrref, + "datenlieferantref": datenlieferantref, + } + + def wastewater_structure_common(self, row, type_name): + """ + Returns common attributes for wastewater_structure + """ + logger.warning( + "Mapping of wastewater_structure->abwasserbauwerk is not fully implemented." + ) + + eigentuemerref = self.get_tid(row.fk_owner__REL) + if eigentuemerref is None: + raise InterlisExporterToIntermediateSchemaError( + f"Invalid owner reference for object '{row.obj_id}' of type '{type_name}'" + ) + + return { + **self.vsa_base_common(row, type_name), + "akten": row.records, + "astatus": self.get_vl(row.status__REL), + "baujahr": row.year_of_construction, + "baulicherzustand": self.get_vl(row.structure_condition__REL), + "baulos": row.contract_section, + "bemerkung": self.truncate(self.emptystr_to_null(row.remark), 80), + "betreiberref": self.get_tid(row.fk_operator__REL), + "bezeichnung": self.null_to_emptystr(row.identifier), + "bruttokosten": row.gross_costs, + "detailgeometrie": ST_Force2D(row.detail_geometry3d_geometry), + "eigentuemerref": eigentuemerref, + "ersatzjahr": row.year_of_replacement, + "finanzierung": self.get_vl(row.financing__REL), + "inspektionsintervall": row.inspection_interval, + "sanierungsbedarf": self.get_vl(row.renovation_necessity__REL), + "standortname": row.location_name, + "subventionen": row.subsidies, + "wbw_basisjahr": row.rv_base_year, + "wbw_bauart": self.get_vl(row.rv_construction_type__REL), + "wiederbeschaffungswert": row.replacement_value, + "zugaenglichkeit": self.get_vl(row.accessibility__REL), + } + + def wastewater_networkelement_common(self, row, type_name): + """ + Returns common attributes for network_element + """ + return { + **self.vsa_base_common(row, type_name), + "abwasserbauwerkref": self.get_tid(row.fk_wastewater_structure__REL), + "bemerkung": self.truncate(self.emptystr_to_null(row.remark), 80), + "bezeichnung": self.null_to_emptystr(row.identifier), + } + + def structure_part_common(self, row, type_name): + """ + Returns common attributes for structure_part + """ + return { + **self.vsa_base_common(row, type_name), + "abwasserbauwerkref": self.get_tid(row.fk_wastewater_structure__REL), + "bemerkung": self.truncate(self.emptystr_to_null(row.remark), 80), + "bezeichnung": self.null_to_emptystr(row.identifier), + "instandstellung": self.get_vl(row.renovation_demand__REL), + } + + def maintenance_event_common(self, row, type_name): + """ + Returns common attributes for maintenance_event + """ + maintenance_event = { + **self.vsa_base_common(row, type_name), + "ausfuehrender": row.operator, + "bemerkung": row.remark, + "bezeichnung": row.identifier, + "datengrundlage": row.base_data, + "dauer": row.duration, + "detaildaten": row.data_details, + "ergebnis": row.result, + "grund": row.reason, + "kosten": row.cost, + "astatus": self.get_vl(row.status__REL), + "zeitpunkt": row.time_point, + "ausfuehrende_firmaref": self.get_tid(row.fk_operating_company__REL), + "massnahmeref": self.get_tid(row.fk_measure__REL), + } + + if self.model == config.MODEL_NAME_VSA_KEK: + query = self.tww_session.query( + self.model_classes_tww_od.re_maintenance_event_wastewater_structure + ).where( + self.model_classes_tww_od.re_maintenance_event_wastewater_structure.fk_maintenance_event + == row.obj_id + ) + for assoc_row in query: + abwasserbauwerkref = maintenance_event.get("abwasserbauwerkref", None) + if abwasserbauwerkref is not None: + logger.warning( + f"Maintenance event '{row.obj_id}' is associated with multiple wastewater structures, but only the first will be exported: '{abwasserbauwerkref}'. This is a limitation of the KEK model." + ) + break + + maintenance_event["abwasserbauwerkref"] = self.get_tid( + assoc_row.fk_wastewater_structure__REL + ) + + return maintenance_event + + def connection_object_common(self, row, type_name): + """ + Returns common attributes for connection_object + """ + return { + **self.vsa_base_common(row, type_name), + "bezeichnung": row.identifier, + "bemerkung": row.remark, + "fremdwasseranfall": row.sewer_infiltration_water_production, + # added check_fk_in_subsetid instead of get_tid to make sure on if filtered we do not write missing fk_wastewater_networkelement + "abwassernetzelementref": self.check_fk_in_subsetid( + row.fk_wastewater_networkelement__REL + ), + } + + def surface_runoff_parameters_common(self, row, type_name): + """ + Returns common attributes for surface_runoff_parameters + """ + return { + **self.vsa_base_common(row, type_name), + "verdunstungsverlust": row.evaporation_loss, + "bezeichnung": row.identifier, + "versickerungsverlust": row.infiltration_loss, + "bemerkung": row.remark, + "muldenverlust": row.surface_storage, + "benetzungsverlust": row.wetting_loss, + "einzugsgebietref": self.get_tid(row.fk_catchment_area__REL), + } + + def zone_common(self, row, type_name): + """ + Returns common attributes for zone + """ + return { + **self.vsa_base_common(row, type_name), + "bemerkung": row.remark, + "bezeichnung": row.identifier, + } + + def overflow_common(self, row, type_name): + """ + Returns common attributes for overflow + """ + return { + **self.vsa_base_common(row, type_name), + "bezeichnung": row.identifier, + "bemerkung": row.remark, + "antrieb": self.get_vl(row.actuation__REL), + "verstellbarkeit": self.get_vl(row.adjustability__REL), + "fabrikat": row.brand, + "steuerung": self.get_vl(row.control__REL), + "einleitstelle": row.discharge_point, + "funktion": self.get_vl(row.function__REL), + "bruttokosten": row.gross_costs, + "qan_dim": row.qon_dim, + "signaluebermittlung": self.get_vl(row.signal_transmission__REL), + "subventionen": row.subsidies, + "abwasserknotenref": self.get_tid(row.fk_wastewater_node__REL), + "ueberlaufnachref": self.get_tid(row.fk_overflow_to__REL), + "ueberlaufcharakteristikref": self.get_tid(row.fk_overflow_char__REL), + "steuerungszentraleref": self.get_tid(row.fk_control_center__REL), + } + + def _textpos_common(self, row, t_type, geojson_crs_def, shortcut_en, oid_prefix): + """ + Returns common attributes for textpos + """ + t_id = self.tid_maker.next_tid() + if t_id > 999999: + logger.warning( + f"Exporting more than 999999 labels will generate invalid OIDs. Currently exporting {t_id} label of type '{t_type}'." + ) + + return { + "t_id": t_id, + "t_type": t_type, + "t_ili_tid": f"{oid_prefix}{shortcut_en}{t_id:06d}", + # --- TextPos --- + "textpos": ST_GeomFromGeoJSON( + json.dumps( + { + "type": "Point", + "coordinates": row["geometry"]["coordinates"], + "crs": geojson_crs_def, + } + ) + ), + "textori": self._modulo_angle(row["properties"]["LabelRotation"]), + "texthali": "Left", # can be Left/Center/Right + "textvali": "Bottom", # can be Top,Cap,Half,Base,Bottom + # --- SIA405_TextPos --- + "plantyp": row["properties"]["scale"], + "textinhalt": row["properties"]["LabelText"], + "bemerkung": None, + } + + def _export_label_positions(self): + logger.info(f"Exporting label positions from {self.labels_file}") + + # get oid prefix + self.oid_prefix = self.get_oid_prefix(self.model_classes_tww_sys.oid_prefixes) + # Get t_id by obj_name to create the reference on the labels below + tid_for_obj_id = { + "vw_tww_reach": {}, + "vw_tww_wastewater_structure": {}, + "catchment_area": {}, + } + for row in self.abwasser_session.query(self.model_classes_interlis.haltung): + tid_for_obj_id["vw_tww_reach"][row.t_ili_tid] = row.t_id + for row in self.abwasser_session.query(self.model_classes_interlis.abwasserbauwerk): + tid_for_obj_id["vw_tww_wastewater_structure"][row.t_ili_tid] = row.t_id + + if self.model in [config.MODEL_NAME_DSS, config.MODEL_NAME_AG96]: + for row in self.abwasser_session.query(self.model_classes_interlis.einzugsgebiet): + tid_for_obj_id["catchment_area"][row.t_ili_tid] = row.t_id + + with open(self.labels_file) as labels_file_handle: + labels = json.load(labels_file_handle) + + geojson_crs_def = labels["crs"] + + for label in labels["features"]: + layer_name = label["properties"]["Layer"] + obj_id = label["properties"]["tww_obj_id"] + + print(f"label[properties]: {label['properties']}") + + if self.subset_ids and obj_id not in self.subset_ids: + logger.warning( + f"Label for {layer_name} `{obj_id}` exists, but that object is not part of the export" + ) + continue + + if not label["properties"]["LabelText"]: + logger.warning( + f"Label of object '{obj_id}' from layer '{layer_name}' is empty and will not be exported" + ) + continue + + t_id = tid_for_obj_id.get(layer_name, {}).get(obj_id, None) + if not t_id: + logger.warning( + f"Label for '{layer_name}' '{obj_id}' exists, but that object is not part of the export" + ) + continue + + if layer_name == "vw_tww_reach": + ili_label = self.model_classes_interlis.haltung_text( + **self._textpos_common( + label, "haltung_text", geojson_crs_def, "RX", self.oid_prefix + ), + haltungref=t_id, + ) + + elif layer_name == "vw_tww_wastewater_structure": + ili_label = self.model_classes_interlis.abwasserbauwerk_text( + **self._textpos_common( + label, "abwasserbauwerk_text", geojson_crs_def, "WX", self.oid_prefix + ), + abwasserbauwerkref=t_id, + ) + + elif layer_name == "catchment_area": + ili_label = self.model_classes_interlis.einzugsgebiet_text( + **self._textpos_common( + label, "einzugsgebiet_text", geojson_crs_def, "CX", self.oid_prefix + ), + einzugsgebietref=t_id, + ) + + else: + logger.warning( + f"Unknown layer `{layer_name}` for label with id '{obj_id}'. Label will be ignored", + ) + continue + + self.abwasser_session.add(ili_label) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def close_sessions(self): + self.tww_session.close() + self.abwasser_session.close() + + def _check_for_stop(self): + if self.callback_progress_done: + self.callback_progress_done() diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py new file mode 100644 index 0000000..273ad94 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py @@ -0,0 +1,2296 @@ +from geoalchemy2.functions import ST_Force3D +from sqlalchemy.orm import Session +from sqlalchemy.orm.attributes import flag_dirty +from sqlalchemy.sql import text + +from ...utils.plugin_utils import logger +from .. import config, utils + + +class InterlisImporterToIntermediateSchema: + def __init__( + self, + model, + model_classes_interlis, + model_classes_tww_od, + model_classes_tww_vl, + callback_progress_done=None, + ): + self.model = model + self.callback_progress_done = callback_progress_done + + self.model_classes_interlis = model_classes_interlis + self.model_classes_tww_od = model_classes_tww_od + self.model_classes_tww_vl = model_classes_tww_vl + + self.session_interlis = None + self.session_tww = None + + def tww_import(self, skip_closing_tww_session=False): + try: + self._tww_import(skip_closing_tww_session) + except Exception as exception: + try: + self.session_tww.rollback() + self.session_tww.close() + self.session_interlis.close() + except Exception as cleanup_exception: + logger.warning(f"Could not close sessions cleanly: {cleanup_exception}") + raise exception + + def _tww_import(self, skip_closing_tww_session): + """ + Imports data from the ili2pg model into the TWW model. + + Args: + precommit_callback: optional callable that gets invoked with the sqlalchemy's session, + allowing for a GUI to filter objects before committing. It MUST either + commit or rollback and close the session. + """ + + # We use two different sessions for reading and writing so it's easier to + # review imports and to keep the door open to getting data from another + # connection / database type. + self.session_interlis = Session( + utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False + ) + self.session_tww = Session( + utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False + ) + + # Allow to insert rows with cyclic dependencies at once + self.session_tww.execute(text("SET CONSTRAINTS ALL DEFERRED;")) + + self._import_sia405_abwasser() + + if self.model == config.MODEL_NAME_DSS: + self._import_dss() + + if self.model == config.MODEL_NAME_VSA_KEK: + self._import_vsa_kek() + + self.close_sessions(skip_closing_tww_session=skip_closing_tww_session) + + def _import_sia405_abwasser(self): + logger.info("\nImporting ABWASSER.organisation -> TWW.organisation") + self._import_organisation() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.kanal -> TWW.channel") + self._import_kanal() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.normschacht -> TWW.manhole") + self._import_normschacht() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.einleitstelle -> TWW.discharge_point") + self._import_einleitstelle() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.spezialbauwerk -> TWW.special_structure") + self._import_spezialbauwerk() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.versickerungsanlage -> TWW.infiltration_installation") + self._import_versickerungsanlage() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.rohrprofil -> TWW.pipe_profile") + self._import_rohrprofil() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.abwasserknoten -> TWW.wastewater_node") + self._import_abwasserknoten() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.haltung -> TWW.reach") + self._import_haltung() + self._check_for_stop() + + logger.info( + "\nImporting ABWASSER.haltung_alternativverlauf -> TWW.reach_progression_alternative" + ) + self._import_haltung_alternativverlauf() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.haltungspunkt -> TWW.reach_point") + self._import_haltungspunkt() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.trockenwetterfallrohr -> TWW.dryweather_downspout") + self._import_trockenwetterfallrohr() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.einstiegshilfe -> TWW.access_aid") + self._import_einstiegshilfe() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.trockenwetterrinne -> TWW.dryweather_flume") + self._import_trockenwetterrinne() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.deckel -> TWW.cover") + self._import_deckel() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.bankett -> TWW.benching") + self._import_bankett() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Spuelstutzen -> TWW.flushing_nozzle") + self._import_spuelstutzen() + self._check_for_stop() + + logger.info( + "\nImporting ABWASSER.abwasserbauwerk_symbol -> TWW.wastewater_structure_symbol" + ) + self._import_abwasserbauwerk_symbol() + self._check_for_stop() + + def _import_dss(self): + logger.info( + "\nImporting ABWASSER.abwasserreinigungsanlage -> TWW.waste_water_treatment_plant" + ) + self._import_abwasserreinigungsanlage() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.araenergienutzung -> TWW.wwtp_energy_use") + self._import_araenergienutzung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.abwasserbehandlung -> TWW.waste_water_treatment") + self._import_abwasserbehandlung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.schlammbehandlung -> TWW.sludge_treatment") + self._import_schlammbehandlung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.arabauwerk -> TWW.wwtp_structure") + self._import_arabauwerk() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.steuerungszentrale -> TWW.control_center") + self._import_steuerungszentrale() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Abflusslose_Toilette -> TWW.drainless_toilet") + self._import_abflusslose_toilette() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Absperr_Drosselorgan -> TWW.throttle_shut_off_unit") + self._import_absperr_drosselorgan() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Beckenentleerung -> TWW.tank_emptying") + self._import_beckenentleerung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Beckenreinigung -> TWW.tank_cleaning") + self._import_beckenreinigung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Biol_oekol_Gesamtbeurteilung -> TWW.bio_ecol_assessment") + self._import_biol_oekol_gesamtbeurteilung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Brunnen -> TWW.fountain") + self._import_brunnen() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.EZG_PARAMETER_ALLG -> TWW.param_ca_general") + self._import_ezg_parameter_allg() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.EZG_PARAMETER_MOUSE1 -> TWW.param_ca_mouse1") + self._import_ezg_parameter_mouse1() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Einzelflaeche -> TWW.individual_surface") + self._import_einzelflaeche() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Einzugsgebiet -> TWW.catchment_area") + self._import_einzugsgebiet() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.ElektrischeEinrichtung -> TWW.electric_equipment") + self._import_elektrischeeinrichtung() + self._check_for_stop() + + logger.info( + "\nImporting ABWASSER.ElektromechanischeAusruestung -> TWW.electromechanical_equipment" + ) + self._import_elektromechanischeausruestung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Entsorgung -> TWW.disposal") + self._import_entsorgung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Entwaesserungssystem -> TWW.drainage_system") + self._import_entwaesserungssystem() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Feststoffrueckhalt -> TWW.solids_retention") + self._import_feststoffrueckhalt() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.FoerderAggregat -> TWW.") + self._import_foerderaggregat() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Gebaeude -> TWW.building") + self._import_gebaeude() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Gebaeudegruppe -> TWW.building_group") + self._import_gebaeudegruppe() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Gebaeudegruppe_BAUGWR -> TWW.building_group_baugwr") + self._import_gebaeudegruppe_baugwr() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Gesamteinzugsgebiet -> TWW.catchment_area_totals") + self._import_gesamteinzugsgebiet() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.HQ_Relation -> TWW.hq_relation") + self._import_hq_relation() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Hydr_GeomRelation -> TWW.hydr_geom_relation") + self._import_hydr_geomrelation() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Hydr_Geometrie -> TWW.hydr_geometry") + self._import_hydr_geometrie() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Hydr_Kennwerte -> TWW.hydraulic_char_data") + self._import_hydr_kennwerte() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.KLARA -> TWW.small_treatment_plant") + self._import_klara() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Landwirtschaftsbetrieb -> TWW.farm") + self._import_landwirtschaftsbetrieb() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Leapingwehr -> TWW.leapingweir") + self._import_leapingwehr() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Massnahme -> TWW.measure") + self._import_massnahme() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.MechanischeVorreinigung -> TWW.mechanical_pretreatment") + self._import_mechanischevorreinigung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Messgeraet -> TWW.measuring_device") + self._import_messgeraet() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Messreihe -> TWW.measurement_series") + self._import_messreihe() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Messresultat -> TWW.measurement_result") + self._import_messresultat() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Messstelle -> TWW.measuring_point") + self._import_messstelle() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Mutation -> TWW.mutation") + self._import_mutation() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Reservoir -> TWW.reservoir") + self._import_reservoir() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Retentionskoerper -> TWW.retention_body") + self._import_retentionskoerper() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Rohrprofil_Geometrie -> TWW.profile_geometry") + self._import_rohrprofil_geometrie() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Rueckstausicherung -> TWW.backflow_prevention") + self._import_rueckstausicherung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Stammkarte -> TWW.log_card") + self._import_stammkarte() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Streichwehr -> TWW.prank_weir") + self._import_streichwehr() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Ueberlaufcharakteristik -> TWW.overflow_char") + self._import_ueberlaufcharakteristik() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Unterhalt -> TWW.maintenance") + self._import_unterhalt() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.Versickerungsbereich -> TWW.infiltration_zone") + self._import_versickerungsbereich() + self._check_for_stop() + + logger.info( + "\nImporting ABWASSER.erhaltungsereignis_abwasserbauwerkassoc -> TWW.re_maintenance_event_wastewater_structure" + ) + self._import_erhaltungsereignis_abwasserbauwerkassoc() + self._check_for_stop() + + logger.info( + "\nImporting ABWASSER.gebaeudegruppe_entsorgungassoc -> TWW.re_building_group_disposal" + ) + self._import_gebaeudegruppe_entsorgungassoc() + self._check_for_stop() + + def _import_vsa_kek(self): + logger.info("\nImporting ABWASSER.untersuchung -> TWW.examination") + self._import_untersuchung() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.normschachtschaden -> TWW.damage_manhole") + self._import_normschachtschaden() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.kanalschaden -> TWW.damage_channel") + self._import_kanalschaden() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.datentraeger -> TWW.data_media") + self._import_datentraeger() + self._check_for_stop() + + logger.info("\nImporting ABWASSER.datei -> TWW.file") + self._import_datei() + self._check_for_stop() + + def close_sessions(self, skip_closing_tww_session=False): + # Calling the precommit callback if provided, allowing to filter before final import + if not skip_closing_tww_session: + self.session_tww.commit() + self.session_tww.close() + self.session_interlis.close() + + def get_vl_instance(self, vl_table, value_de): + """ + Gets a value list instance from the value_de name. Returns None and a warning if not found. + """ + # TODO : memoize (and get the whole table at once) to improve N+1 performance issue + # TODO : return "other" (or other applicable value) rather than None, or even throwing an exception, would probably be better + instance = self.session_tww.query(vl_table).filter(vl_table.value_de == value_de).first() + if instance is None: + logger.warning( + f'Could not find value `{value_de}` in value list "{vl_table.__table__.schema}.{vl_table.__name__}". Setting to None instead.' + ) + return None + return instance + + def get_vl_code(self, vl_table, value_de): + if value_de is None: + return None + + instance = self.get_vl_instance(vl_table, value_de) + if instance is None: + return None + return instance.code + + def get_pk(self, relation): + """ + Returns the primary key for a relation + """ + if relation is None: + return None + return relation.t_ili_tid + + def create_or_update(self, cls, **kwargs): + """ + Updates an existing instance (if obj_id is found) or creates an instance of the provided class + with given kwargs, and returns it. + """ + instance = None + + # We try to get the instance from the session/database + obj_id = kwargs.get("obj_id", None) + if obj_id: + instance = self.session_tww.query(cls).get(kwargs.get("obj_id", None)) + + if instance: + # We found it -> update + instance.__dict__.update(kwargs) + flag_dirty(instance) # we flag it as dirty so it stays in the session + else: + # We didn't find it -> create + instance = cls(**kwargs) + + return instance + + def base_common(self, row): + """ + Returns common attributes for base + """ + return { + "obj_id": row.t_ili_tid, + "fk_dataowner": row.datenherrref, + "fk_provider": row.datenlieferantref, + "last_modification": row.letzte_aenderung, + } + + def wastewater_structure_common(self, row): + """ + Returns common attributes for wastewater_structure + """ + return { + "accessibility": self.get_vl_code( + self.model_classes_tww_od.wastewater_structure_accessibility, row.zugaenglichkeit + ), + "contract_section": row.baulos, + "detail_geometry3d_geometry": ST_Force3D(row.detailgeometrie), + # TODO : NOT MAPPED VSA-DSS 3D + # "elevation_determination": self.get_vl_code( + # self.model_classes_tww_od.wastewater_structure_elevation_determination, row.hoehenbestimmung + # ), + "financing": self.get_vl_code( + self.model_classes_tww_od.wastewater_structure_financing, row.finanzierung + ), + "fk_operator": row.betreiberref, + "fk_owner": row.eigentuemerref, + "gross_costs": row.bruttokosten, + "identifier": row.bezeichnung, + "inspection_interval": row.inspektionsintervall, + "location_name": row.standortname, + "records": row.akten, + "remark": row.bemerkung, + "renovation_necessity": self.get_vl_code( + self.model_classes_tww_od.wastewater_structure_renovation_necessity, + row.sanierungsbedarf, + ), + "replacement_value": row.wiederbeschaffungswert, + "rv_base_year": row.wbw_basisjahr, + "rv_construction_type": self.get_vl_code( + self.model_classes_tww_od.wastewater_structure_rv_construction_type, row.wbw_bauart + ), + "status": self.get_vl_code( + self.model_classes_tww_vl.wastewater_structure_status, row.astatus + ), + "structure_condition": self.get_vl_code( + self.model_classes_tww_od.wastewater_structure_structure_condition, + row.baulicherzustand, + ), + "subsidies": row.subventionen, + "year_of_construction": row.baujahr, + "year_of_replacement": row.ersatzjahr, + } + + def wastewater_networkelement_common(self, row): + """ + Returns common attributes for network_element + """ + return { + "fk_wastewater_structure": self.get_pk(row.abwasserbauwerkref__REL), + "identifier": row.bezeichnung, + "remark": row.bemerkung, + } + + def structure_part_common(self, row): + """ + Returns common attributes for structure_part + """ + return { + "fk_wastewater_structure": self.get_pk(row.abwasserbauwerkref__REL), + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "renovation_demand": self.get_vl_code( + self.model_classes_tww_od.structure_part_renovation_demand, row.instandstellung + ), + } + + def maintenance_event_common(self, row): + """ + Returns common attributes for connection_object + """ + return { + "base_data": row.datengrundlage, + "cost": row.kosten, + "data_details": row.detaildaten, + "duration": row.dauer, + "operator": row.ausfuehrender, + "reason": row.grund, + "result": row.ergebnis, + "status": self.get_vl_code( + self.model_classes_tww_vl.maintenance_event_status, row.astatus + ), + "time_point": row.zeitpunkt, + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "fk_operating_company": row.ausfuehrende_firmaref, + "fk_measure": self.get_pk(row.massnahmeref__REL), + } + + def connection_object_common(self, row): + """ + Returns common attributes for connection_object + """ + return { + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "sewer_infiltration_water_production": row.fremdwasseranfall, + "fk_wastewater_networkelement": self.get_pk(row.abwassernetzelementref__REL), + } + + def surface_runoff_parameters_common(self, row): + """ + Returns common attributes for surface_runoff_parameters + """ + return { + "evaporation_loss": row.verdunstungsverlust, + "identifier": row.bezeichnung, + "infiltration_loss": row.versickerungsverlust, + "remark": row.bemerkung, + "surface_storage": row.muldenverlust, + "wetting_loss": row.benetzungsverlust, + "fk_catchment_area": self.get_pk(row.einzugsgebietref__REL), + } + + def zone_common(self, row): + """ + Returns common attributes for zone + """ + return { + "identifier": row.bezeichnung, + "remark": row.bemerkung, + } + + def overflow_common(self, row): + """ + Returns common attributes for overflow + """ + return { + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "actuation": self.get_vl_code( + self.model_classes_tww_vl.overflow_actuation, row.antrieb + ), + "adjustability": self.get_vl_code( + self.model_classes_tww_vl.overflow_adjustability, row.verstellbarkeit + ), + "brand": row.fabrikat, + "control": self.get_vl_code(self.model_classes_tww_vl.overflow_control, row.steuerung), + "discharge_point": row.einleitstelle, + "function": self.get_vl_code( + self.model_classes_tww_vl.overflow_function, row.funktion + ), + "gross_costs": row.bruttokosten, + "qon_dim": row.qan_dim, + "signal_transmission": self.get_vl_code( + self.model_classes_tww_vl.overflow_signal_transmission, row.signaluebermittlung + ), + "subsidies": row.subventionen, + "fk_wastewater_node": self.get_pk(row.abwasserknotenref__REL), + "fk_overflow_to": self.get_pk(row.ueberlaufnachref__REL), + "fk_overflow_char": self.get_pk(row.ueberlaufcharakteristikref__REL), + "fk_control_center": self.get_pk(row.steuerungszentraleref__REL), + } + + def _import_organisation(self): + for row in self.session_interlis.query(self.model_classes_interlis.organisation): + organisation = self.create_or_update( + self.model_classes_tww_od.organisation, + obj_id=row.t_ili_tid, + # manually add for organisation (instead of adding **self.base_common(row) as this would also add fk_dataowner and fk_provider, that are not in INTERLIS for class organisation (change to VSA-DSS 2015, as organisation is now a separate external class maintained by the VSA (or its successor organisation for this) + last_modification=row.letzte_aenderung, + # --- organisation --- + identifier=row.bezeichnung, + identifier_short=row.kurzbezeichnung, + municipality_number=row.gemeindenummer, + organisation_type=self.get_vl_code( + self.model_classes_tww_vl.organisation_organisation_type, row.organisationstyp + ), + remark=row.bemerkung, + status=self.get_vl_code( + self.model_classes_tww_vl.organisation_status, row.astatus + ), + uid=row.auid, + ) + + self.session_tww.add(organisation) + print(".", end="") + + def _import_kanal(self): + for row in self.session_interlis.query(self.model_classes_interlis.kanal): + channel = self.create_or_update( + self.model_classes_tww_od.channel, + **self.base_common(row), + # --- wastewater_structure --- + **self.wastewater_structure_common(row), + # --- channel --- + bedding_encasement=self.get_vl_code( + self.model_classes_tww_od.channel_bedding_encasement, row.bettung_umhuellung + ), + connection_type=self.get_vl_code( + self.model_classes_tww_od.channel_connection_type, row.verbindungsart + ), + function_hierarchic=self.get_vl_code( + self.model_classes_tww_od.channel_function_hierarchic, row.funktionhierarchisch + ), + function_hydraulic=self.get_vl_code( + self.model_classes_tww_od.channel_function_hydraulic, row.funktionhydraulisch + ), + jetting_interval=row.spuelintervall, + pipe_length=row.rohrlaenge, + usage_current=self.get_vl_code( + self.model_classes_tww_od.channel_usage_current, row.nutzungsart_ist + ), + usage_planned=self.get_vl_code( + self.model_classes_tww_od.channel_usage_planned, row.nutzungsart_geplant + ), + ) + self.session_tww.add(channel) + print(".", end="") + + def _import_normschacht(self): + for row in self.session_interlis.query(self.model_classes_interlis.normschacht): + manhole = self.create_or_update( + self.model_classes_tww_od.manhole, + **self.base_common(row), + # --- wastewater_structure --- + **self.wastewater_structure_common(row), + # --- manhole --- + # _orientation=row.REPLACE_ME, + dimension1=row.dimension1, + dimension2=row.dimension2, + function=self.get_vl_code( + self.model_classes_tww_vl.manhole_function, row.funktion + ), + material=self.get_vl_code( + self.model_classes_tww_vl.manhole_material, row.material + ), + surface_inflow=self.get_vl_code( + self.model_classes_tww_od.manhole_surface_inflow, row.oberflaechenzulauf + ), + ) + self.session_tww.add(manhole) + print(".", end="") + + def _import_einleitstelle(self): + for row in self.session_interlis.query(self.model_classes_interlis.einleitstelle): + discharge_point = self.create_or_update( + self.model_classes_tww_od.discharge_point, + **self.base_common(row), + # --- wastewater_structure --- + **self.wastewater_structure_common(row), + # --- discharge_point --- + # fk_sector_water_body=row.REPLACE_ME, # TODO : NOT MAPPED + highwater_level=row.hochwasserkote, + relevance=self.get_vl_code( + self.model_classes_tww_od.discharge_point_relevance, row.relevanz + ), + terrain_level=row.terrainkote, + # TODO : NOT MAPPED VSA-DSS 3D + # upper_elevation=row.deckenkote, + waterlevel_hydraulic=row.wasserspiegel_hydraulik, + ) + self.session_tww.add(discharge_point) + print(".", end="") + + def _import_spezialbauwerk(self): + for row in self.session_interlis.query(self.model_classes_interlis.spezialbauwerk): + special_structure = self.create_or_update( + self.model_classes_tww_od.special_structure, + **self.base_common(row), + # --- wastewater_structure --- + **self.wastewater_structure_common(row), + # --- special_structure --- + bypass=self.get_vl_code( + self.model_classes_tww_vl.special_structure_bypass, row.bypass + ), + emergency_overflow=self.get_vl_code( + self.model_classes_tww_vl.special_structure_emergency_overflow, + row.notueberlauf, + ), + function=self.get_vl_code( + self.model_classes_tww_od.special_structure_function, row.funktion + ), + stormwater_tank_arrangement=self.get_vl_code( + self.model_classes_tww_od.special_structure_stormwater_tank_arrangement, + row.regenbecken_anordnung, + ), + # TODO : NOT MAPPED VSA-DSS 3D + # upper_elevation=row.deckenkote, + ) + self.session_tww.add(special_structure) + print(".", end="") + + def _import_versickerungsanlage(self): + for row in self.session_interlis.query(self.model_classes_interlis.versickerungsanlage): + infiltration_installation = self.create_or_update( + self.model_classes_tww_od.infiltration_installation, + **self.base_common(row), + # --- wastewater_structure --- + **self.wastewater_structure_common(row), + # --- infiltration_installation --- + absorption_capacity=row.schluckvermoegen, + defects=self.get_vl_code( + self.model_classes_tww_od.infiltration_installation_defects, row.maengel + ), + dimension1=row.dimension1, + dimension2=row.dimension2, + distance_to_aquifer=row.gwdistanz, + effective_area=row.wirksameflaeche, + emergency_overflow=self.get_vl_code( + self.model_classes_tww_od.infiltration_installation_emergency_overflow, + row.notueberlauf, + ), + # fk_dss15_aquifer=row.REPLACE_ME, # TODO : NOT MAPPED + kind=self.get_vl_code( + self.model_classes_tww_vl.infiltration_installation_kind, row.art + ), + labeling=self.get_vl_code( + self.model_classes_tww_od.infiltration_installation_labeling, row.beschriftung + ), + seepage_utilization=self.get_vl_code( + self.model_classes_tww_od.infiltration_installation_seepage_utilization, + row.versickerungswasser, + ), + # TODO : NOT MAPPED VSA-DSS 3D + # upper_elevation=row.deckenkote, + vehicle_access=self.get_vl_code( + self.model_classes_tww_od.infiltration_installation_vehicle_access, + row.saugwagen, + ), + watertightness=self.get_vl_code( + self.model_classes_tww_od.infiltration_installation_watertightness, + row.wasserdichtheit, + ), + ) + self.session_tww.add(infiltration_installation) + print(".", end="") + + def _import_abwasserreinigungsanlage(self): + for row in self.session_interlis.query( + self.model_classes_interlis.abwasserreinigungsanlage + ): + waste_water_treatment_plant = self.create_or_update( + self.model_classes_tww_od.waste_water_treatment_plant, + **self.base_common(row), + # --- waste_water_treatment_plant --- + area_geometry=row.perimeter, + bod5=row.bsb5, + cod=row.csb, + elimination_cod=row.eliminationcsb, + elimination_n=row.eliminationn, + elimination_nh4=row.eliminationnh4, + elimination_p=row.eliminationp, + identifier=row.bezeichnung, + kind=row.art, + nh4=row.nh4, + operator_type=self.get_vl_code( + self.model_classes_tww_vl.waste_water_treatment_plant_operator_type, + row.betreibertyp, + ), + population_connected=row.einwohner_angeschlossen, + population_total=row.einwohner_total, + remark=row.bemerkung, + situation_geometry=row.lage, + start_year=row.inbetriebnahme, + wwtp_number=row.ara_nr, + ) + self.session_tww.add(waste_water_treatment_plant) + print(".", end="") + + def _import_araenergienutzung(self): + for row in self.session_interlis.query(self.model_classes_interlis.araenergienutzung): + wwtp_energy_use = self.create_or_update( + self.model_classes_tww_od.wwtp_energy_use, + **self.base_common(row), + # --- wwtp_energy_use --- + gas_motor=row.gasmotor, + heat_pump=row.waermepumpe, + identifier=row.bezeichnung, + remark=row.bemerkung, + turbining=row.turbinierung, + fk_waste_water_treatment_plant=self.get_pk(row.abwasserreinigungsanlageref__REL), + ) + self.session_tww.add(wwtp_energy_use) + print(".", end="") + + def _import_abwasserbehandlung(self): + for row in self.session_interlis.query(self.model_classes_interlis.abwasserbehandlung): + waste_water_treatment = self.create_or_update( + self.model_classes_tww_od.waste_water_treatment, + **self.base_common(row), + # --- waste_water_treatment --- + identifier=row.bezeichnung, + kind=self.get_vl_code( + self.model_classes_tww_vl.waste_water_treatment_kind, row.art + ), + remark=row.bemerkung, + fk_waste_water_treatment_plant=self.get_pk(row.abwasserreinigungsanlageref__REL), + ) + self.session_tww.add(waste_water_treatment) + print(".", end="") + + def _import_schlammbehandlung(self): + for row in self.session_interlis.query(self.model_classes_interlis.schlammbehandlung): + sludge_treatment = self.create_or_update( + self.model_classes_tww_od.sludge_treatment, + **self.base_common(row), + # --- sludge_treatment --- + composting=row.kompostierung, + dehydration=row.entwaesserung, + digested_sludge_combustion=row.faulschlammverbrennung, + drying=row.trocknung, + fresh_sludge_combustion=row.frischschlammverbrennung, + hygenisation=row.hygienisierung, + identifier=row.bezeichnung, + predensification_of_excess_sludge=row.ueberschusschlammvoreindickung, + predensification_of_mixed_sludge=row.mischschlammvoreindickung, + predensification_of_primary_sludge=row.primaerschlammvoreindickung, + remark=row.bemerkung, + stabilisation=self.get_vl_code( + self.model_classes_tww_vl.sludge_treatment_stabilisation, row.stabilisierung + ), + stacking_of_dehydrated_sludge=row.entwaessertklaerschlammstapelung, + stacking_of_liquid_sludge=row.fluessigklaerschlammstapelung, + fk_waste_water_treatment_plant=self.get_pk(row.abwasserreinigungsanlageref__REL), + ) + self.session_tww.add(sludge_treatment) + print(".", end="") + + def _import_arabauwerk(self): + for row in self.session_interlis.query(self.model_classes_interlis.arabauwerk): + wwtp_structure = self.create_or_update( + self.model_classes_tww_od.wwtp_structure, + **self.base_common(row), + # --- wastewater_structure --- + **self.wastewater_structure_common(row), + # --- wwtp_structure --- + kind=self.get_vl_code(self.model_classes_tww_vl.wwtp_structure_kind, row.art), + fk_waste_water_treatment_plant=self.get_pk(row.abwasserreinigungsanlageref__REL), + ) + self.session_tww.add(wwtp_structure) + print(".", end="") + + def _import_steuerungszentrale(self): + for row in self.session_interlis.query(self.model_classes_interlis.steuerungszentrale): + control_center = self.create_or_update( + self.model_classes_tww_od.control_center, + **self.base_common(row), + # --- control_center --- + identifier=row.bezeichnung, + situation_geometry=row.lage, + ) + self.session_tww.add(control_center) + print(".", end="") + + def _import_abflusslose_toilette(self): + for row in self.session_interlis.query(self.model_classes_interlis.abflusslose_toilette): + drainless_toilet = self.create_or_update( + self.model_classes_tww_od.drainless_toilet, + **self.base_common(row), + **self.wastewater_structure_common(row), + # --- drainless_toilet --- + kind=self.get_vl_code(self.model_classes_tww_vl.drainless_toilet_kind, row.art), + ) + self.session_tww.add(drainless_toilet) + print(".", end="") + + def _import_absperr_drosselorgan(self): + for row in self.session_interlis.query(self.model_classes_interlis.absperr_drosselorgan): + throttle_shut_off_unit = self.create_or_update( + self.model_classes_tww_od.throttle_shut_off_unit, + **self.base_common(row), + # --- throttle_shut_off_unit --- + actuation=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_actuation, row.antrieb + ), + adjustability=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_adjustability, + row.verstellbarkeit, + ), + control=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_control, row.steuerung + ), + cross_section=row.querschnitt, + effective_cross_section=row.wirksamer_qs, + gross_costs=row.bruttokosten, + identifier=row.bezeichnung, + kind=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_kind, row.art + ), + manufacturer=row.fabrikat, + remark=row.bemerkung, + signal_transmission=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_signal_transmission, + row.signaluebermittlung, + ), + subsidies=row.subventionen, + throttle_unit_opening_current=row.drosselorgan_oeffnung_ist, + throttle_unit_opening_current_optimized=row.drosselorgan_oeffnung_ist_optimiert, + fk_wastewater_node=self.get_pk(row.abwasserknotenref__REL), + fk_control_center=self.get_pk(row.steuerungszentraleref__REL), + fk_overflow=self.get_pk(row.ueberlaufref__REL), + ) + self.session_tww.add(throttle_shut_off_unit) + print(".", end="") + + def _import_beckenentleerung(self): + for row in self.session_interlis.query(self.model_classes_interlis.beckenentleerung): + tank_emptying = self.create_or_update( + self.model_classes_tww_od.tank_emptying, + **self.base_common(row), + **self.structure_part_common(row), + # --- tank_emptying --- + flow=row.leistung, + gross_costs=row.bruttokosten, + kind=self.get_vl_code(self.model_classes_tww_vl.tank_emptying_kind, row.art), + year_of_replacement=row.ersatzjahr, + fk_throttle_shut_off_unit=self.get_pk(row.absperr_drosselorganref__REL), + fk_overflow=self.get_pk(row.ueberlaufref__REL), + ) + self.session_tww.add(tank_emptying) + print(".", end="") + + def _import_beckenreinigung(self): + for row in self.session_interlis.query(self.model_classes_interlis.beckenreinigung): + tank_cleaning = self.create_or_update( + self.model_classes_tww_od.tank_cleaning, + **self.base_common(row), + **self.structure_part_common(row), + # --- tank_cleaning --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code(self.model_classes_tww_vl.tank_cleaning_kind, row.art), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(tank_cleaning) + print(".", end="") + + def _import_biol_oekol_gesamtbeurteilung(self): + for row in self.session_interlis.query( + self.model_classes_interlis.biol_oekol_gesamtbeurteilung + ): + bio_ecol_assessment = self.create_or_update( + self.model_classes_tww_od.bio_ecol_assessment, + **self.base_common(row), + **self.maintenance_event_common(row), + # --- bio_ecol_assessment --- + comparison_last=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_comparison_last, + row.vergleich_letzte_untersuchung, + ), + date_last_examen=row.datum_letzte_untersuchung, + impact_auxiliary_indic=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_auxiliary_indic, + row.einfluss_hilfsindikatoren, + ), + impact_external_aspect=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_external_aspect, + row.einfluss_aeusserer_aspekt, + ), + impact_macroinvertebrates=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_macroinvertebrates, + row.einfluss_makroinvertebraten, + ), + impact_water_plants=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_water_plants, + row.einfluss_wasserpflanzen, + ), + intervention_demand=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_intervention_demand, + row.handlungsbedarf, + ), + io_calculation=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_io_calculation, + row.immissionsorientierte_berechnung, + ), + outlet_pipe_clear_height=row.auslaufrohr_lichte_hoehe, + q347=row.q347, + relevance_matrix=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_relevance_matrix, + row.relevanzmatrix, + ), + relevant_slope=row.relevantes_gefaelle, + surface_water_bodies=row.oberflaechengewaesser, + kind_water_body=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_kind_water_body, row.gewaesserart + ), + water_specific_discharge_freight_nh4_n_current=row.gewaesserspezifische_entlastungsfracht_nh4_n_ist, + water_specific_discharge_freight_nh4_n_current_opt=row.gewaesserspezifische_entlastungsfracht_nh4_n_ist_optimiert, + water_specific_discharge_freight_nh4_n_planned=row.gewaesserspezifische_entlastungsfracht_nh4_n_geplant, + ) + self.session_tww.add(bio_ecol_assessment) + print(".", end="") + + def _import_brunnen(self): + for row in self.session_interlis.query(self.model_classes_interlis.brunnen): + fountain = self.create_or_update( + self.model_classes_tww_od.fountain, + **self.base_common(row), + **self.connection_object_common(row), + # --- fountain --- + location_name=row.standortname, + situation_geometry=row.lage, + ) + self.session_tww.add(fountain) + print(".", end="") + + def _import_ezg_parameter_allg(self): + for row in self.session_interlis.query(self.model_classes_interlis.ezg_parameter_allg): + param_ca_general = self.create_or_update( + self.model_classes_tww_od.param_ca_general, + **self.base_common(row), + **self.surface_runoff_parameters_common(row), + # --- param_ca_general --- + dry_wheather_flow=row.trockenwetteranfall, + flow_path_length=row.fliessweglaenge, + flow_path_slope=row.fliessweggefaelle, + population_equivalent=row.einwohnergleichwert, + surface_ca=row.flaeche, + ) + self.session_tww.add(param_ca_general) + print(".", end="") + + def _import_ezg_parameter_mouse1(self): + for row in self.session_interlis.query(self.model_classes_interlis.ezg_parameter_mouse1): + param_ca_mouse1 = self.create_or_update( + self.model_classes_tww_od.param_ca_mouse1, + **self.base_common(row), + **self.surface_runoff_parameters_common(row), + # --- param_ca_mouse1 --- + dry_wheather_flow=row.trockenwetteranfall, + flow_path_length=row.fliessweglaenge, + flow_path_slope=row.fliessweggefaelle, + population_equivalent=row.einwohnergleichwert, + surface_ca_mouse=row.flaeche, + usage=row.nutzungsart, + ) + self.session_tww.add(param_ca_mouse1) + print(".", end="") + + def _import_einzelflaeche(self): + for row in self.session_interlis.query(self.model_classes_interlis.einzelflaeche): + individual_surface = self.create_or_update( + self.model_classes_tww_od.individual_surface, + **self.base_common(row), + **self.connection_object_common(row), + # --- individual_surface --- + function=self.get_vl_code( + self.model_classes_tww_vl.individual_surface_function, row.funktion + ), + inclination=row.neigung, + pavement=self.get_vl_code( + self.model_classes_tww_vl.individual_surface_pavement, row.befestigung + ), + perimeter_geometry=row.perimeter, + ) + self.session_tww.add(individual_surface) + print(".", end="") + + def _import_einzugsgebiet(self): + for row in self.session_interlis.query(self.model_classes_interlis.einzugsgebiet): + catchment_area = self.create_or_update( + self.model_classes_tww_od.catchment_area, + **self.base_common(row), + # --- catchment_area --- + direct_discharge_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_direct_discharge_current, + row.direkteinleitung_in_gewaesser_ist, + ), + direct_discharge_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_direct_discharge_planned, + row.direkteinleitung_in_gewaesser_geplant, + ), + discharge_coefficient_rw_current=row.abflussbeiwert_rw_ist, + discharge_coefficient_rw_planned=row.abflussbeiwert_rw_geplant, + discharge_coefficient_ww_current=row.abflussbeiwert_sw_ist, + discharge_coefficient_ww_planned=row.abflussbeiwert_sw_geplant, + drainage_system_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_drainage_system_current, + row.entwaesserungssystem_ist, + ), + drainage_system_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_drainage_system_planned, + row.entwaesserungssystem_geplant, + ), + identifier=row.bezeichnung, + infiltration_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_infiltration_current, + row.versickerung_ist, + ), + infiltration_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_infiltration_planned, + row.versickerung_geplant, + ), + perimeter_geometry=row.perimeter, + population_density_current=row.einwohnerdichte_ist, + population_density_planned=row.einwohnerdichte_geplant, + remark=row.bemerkung, + retention_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_retention_current, row.retention_ist + ), + retention_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_retention_planned, + row.retention_geplant, + ), + runoff_limit_current=row.abflussbegrenzung_ist, + runoff_limit_planned=row.abflussbegrenzung_geplant, + seal_factor_rw_current=row.befestigungsgrad_rw_ist, + seal_factor_rw_planned=row.befestigungsgrad_rw_geplant, + seal_factor_ww_current=row.befestigungsgrad_sw_ist, + seal_factor_ww_planned=row.befestigungsgrad_sw_geplant, + sewer_infiltration_water_production_current=row.fremdwasseranfall_ist, + sewer_infiltration_water_production_planned=row.fremdwasseranfall_geplant, + surface_area=row.flaeche, + waste_water_production_current=row.schmutzabwasseranfall_ist, + waste_water_production_planned=row.schmutzabwasseranfall_geplant, + fk_wastewater_networkelement_rw_current=self.get_pk( + row.abwassernetzelement_rw_istref__REL + ), + fk_wastewater_networkelement_rw_planned=self.get_pk( + row.abwassernetzelement_rw_geplantref__REL + ), + fk_wastewater_networkelement_ww_planned=self.get_pk( + row.abwassernetzelement_sw_geplantref__REL + ), + fk_wastewater_networkelement_ww_current=self.get_pk( + row.abwassernetzelement_sw_istref__REL + ), + fk_special_building_rw_planned=self.get_pk(row.sbw_rw_geplantref__REL), + fk_special_building_rw_current=self.get_pk(row.sbw_rw_istref__REL), + fk_special_building_ww_planned=self.get_pk(row.sbw_sw_geplantref__REL), + fk_special_building_ww_current=self.get_pk(row.sbw_sw_istref__REL), + ) + self.session_tww.add(catchment_area) + print(".", end="") + + def _import_elektrischeeinrichtung(self): + for row in self.session_interlis.query(self.model_classes_interlis.elektrischeeinrichtung): + electric_equipment = self.create_or_update( + self.model_classes_tww_od.electric_equipment, + **self.base_common(row), + **self.structure_part_common(row), + # --- electric_equipment --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code(self.model_classes_tww_vl.electric_equipment_kind, row.art), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(electric_equipment) + print(".", end="") + + def _import_elektromechanischeausruestung(self): + for row in self.session_interlis.query( + self.model_classes_interlis.elektromechanischeausruestung + ): + electromechanical_equipment = self.create_or_update( + self.model_classes_tww_od.electromechanical_equipment, + **self.base_common(row), + **self.structure_part_common(row), + # --- electromechanical_equipment --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code( + self.model_classes_tww_vl.electromechanical_equipment_kind, row.art + ), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(electromechanical_equipment) + print(".", end="") + + def _import_entsorgung(self): + for row in self.session_interlis.query(self.model_classes_interlis.entsorgung): + disposal = self.create_or_update( + self.model_classes_tww_od.disposal, + **self.base_common(row), + # --- disposal --- + disposal_interval_current=row.entsorgungsintervall_ist, + disposal_interval_nominal=row.entsorgungsintervall_soll, + disposal_place_current=self.get_vl_code( + self.model_classes_tww_vl.disposal_disposal_place_current, + row.entsorgungsort_ist, + ), + disposal_place_planned=self.get_vl_code( + self.model_classes_tww_vl.disposal_disposal_place_planned, + row.entsorgungsort_geplant, + ), + volume_pit_without_drain=row.volumenabflusslosegrube, + fk_infiltration_installation=self.get_pk(row.versickerungsanlageref__REL), + fk_discharge_point=self.get_pk(row.einleitstelleref__REL), + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(disposal) + print(".", end="") + + def _import_entwaesserungssystem(self): + for row in self.session_interlis.query(self.model_classes_interlis.entwaesserungssystem): + drainage_system = self.create_or_update( + self.model_classes_tww_od.drainage_system, + **self.base_common(row), + **self.zone_common(row), + # --- drainage_system --- + kind=self.get_vl_code(self.model_classes_tww_vl.drainage_system_kind, row.art), + perimeter_geometry=row.perimeter, + ) + self.session_tww.add(drainage_system) + print(".", end="") + + def _import_feststoffrueckhalt(self): + for row in self.session_interlis.query(self.model_classes_interlis.feststoffrueckhalt): + solids_retention = self.create_or_update( + self.model_classes_tww_od.solids_retention, + **self.base_common(row), + **self.structure_part_common(row), + # --- solids_retention --- + dimensioning_value=row.dimensionierungswert, + gross_costs=row.bruttokosten, + overflow_level=row.anspringkote, + kind=self.get_vl_code(self.model_classes_tww_vl.solids_retention_kind, row.art), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(solids_retention) + print(".", end="") + + def _import_foerderaggregat(self): + for row in self.session_interlis.query(self.model_classes_interlis.foerderaggregat): + pump = self.create_or_update( + self.model_classes_tww_od.pump, + **self.base_common(row), + **self.overflow_common(row), + # --- pump --- + construction_type=self.get_vl_code( + self.model_classes_tww_vl.pump_construction_type, row.bauart + ), + operating_point=row.arbeitspunkt, + placement_of_actuation=self.get_vl_code( + self.model_classes_tww_vl.pump_placement_of_actuation, row.aufstellungantrieb + ), + placement_of_pump=self.get_vl_code( + self.model_classes_tww_vl.pump_placement_of_pump, + row.aufstellungfoerderaggregat, + ), + pump_flow_max_single=row.foerderstrommax_einzel, + pump_flow_min_single=row.foerderstrommin_einzel, + start_level=row.kotestart, + stop_level=row.kotestop, + ) + self.session_tww.add(pump) + print(".", end="") + + def _import_gebaeude(self): + for row in self.session_interlis.query(self.model_classes_interlis.gebaeude): + building = self.create_or_update( + self.model_classes_tww_od.building, + **self.base_common(row), + **self.connection_object_common(row), + # --- building --- + house_number=row.hausnummer, + location_name=row.standortname, + perimeter_geometry=row.perimeter, + reference_point_geometry=row.referenzpunkt, + ) + self.session_tww.add(building) + print(".", end="") + + def _import_gebaeudegruppe(self): + for row in self.session_interlis.query(self.model_classes_interlis.gebaeudegruppe): + building_group = self.create_or_update( + self.model_classes_tww_od.building_group, + **self.base_common(row), + # --- building_group --- + movie_theater_seats=row.kinositzplaetze, + church_seats=row.kirchesitzplaetze, + camping_area=row.campingflaeche, + camping_lodgings=row.campinguebernachtungen, + connecting_obligation=self.get_vl_code( + self.model_classes_tww_vl.building_group_connecting_obligation, + row.anschlusspflicht, + ), + connection_wwtp=self.get_vl_code( + self.model_classes_tww_vl.building_group_connection_wwtp, row.anschlussara + ), + craft_employees=row.gewerbebeschaeftigte, + dorm_beds=row.schlafsaalbetten, + dorm_overnight_stays=row.schlafsaaluebernachtungen, + drainage_map=self.get_vl_code( + self.model_classes_tww_vl.building_group_drainage_map, row.entwaesserungsplan + ), + drinking_water_network=self.get_vl_code( + self.model_classes_tww_vl.building_group_drinking_water_network, + row.trinkwassernetzanschluss, + ), + drinking_water_others=self.get_vl_code( + self.model_classes_tww_vl.building_group_drinking_water_others, + row.trinkwasserandere, + ), + electric_connection=self.get_vl_code( + self.model_classes_tww_vl.building_group_electric_connection, + row.stromanschluss, + ), + event_visitors=row.veranstaltungbesucher, + function=self.get_vl_code( + self.model_classes_tww_vl.building_group_function, row.funktion + ), + gym_area=row.turnhalleflaeche, + holiday_accomodation=row.ferienuebernachtungen, + hospital_beds=row.spitalbetten, + hotel_beds=row.hotelbetten, + hotel_overnight_stays=row.hoteluebernachtungen, + identifier=row.bezeichnung, + other_usage_population_equivalent=row.anderenutzungegw, + other_usage_type=row.anderenutzungart, + population_equivalent=row.einwohnerwerte, + remark=row.bemerkung, + renovation_date=row.sanierungsdatum, + renovation_necessity=self.get_vl_code( + self.model_classes_tww_vl.building_group_renovation_necessity, + row.sanierungsbedarf, + ), + restaurant_seats=row.raststaettesitzplaetze, + restaurant_seats_hall_garden=row.restaurantsitzplaetze_saalgarten, + restaurant_seats_permanent=row.restaurantsitzplaetze_permanent, + restructuring_concept=row.sanierungskonzept, + school_students=row.schuleschueler, + situation_geometry=row.lage, + # fk_disposal=self.get_pk(row.entsorgungref__REL), # TODO check why not available + fk_measure=self.get_pk(row.massnahmeref__REL), + ) + self.session_tww.add(building_group) + print(".", end="") + + def _import_gebaeudegruppe_baugwr(self): + for row in self.session_interlis.query(self.model_classes_interlis.gebaeudegruppe_baugwr): + building_group_baugwr = self.create_or_update( + self.model_classes_tww_od.building_group_baugwr, + **self.base_common(row), + # --- building_group_baugwr --- + egid=row.egid, + fk_building_group=self.get_pk(row.gebaeudegrupperef__REL), + ) + self.session_tww.add(building_group_baugwr) + print(".", end="") + + def _import_gesamteinzugsgebiet(self): + for row in self.session_interlis.query(self.model_classes_interlis.gesamteinzugsgebiet): + catchment_area_totals = self.create_or_update( + self.model_classes_tww_od.catchment_area_totals, + **self.base_common(row), + # --- catchment_area_totals --- + discharge_freight_nh4_n=row.entlastungsfracht_nh4_n, + discharge_proportion_nh4_n=row.entlastungsanteil_nh4_n, + identifier=row.bezeichnung, + population=row.einwohner, + population_dim=row.einwohner_dim, + sewer_infiltration_water=row.fremdwasseranfall, + surface_area=row.flaeche, + surface_dim=row.flaeche_dim, + surface_imp=row.flaeche_bef, + surface_imp_dim=row.flaeche_bef_dim, + surface_red=row.flaeche_red, + surface_red_dim=row.flaeche_red_dim, + waste_water_production=row.schmutzabwasseranfall, + fk_discharge_point=self.get_pk(row.einleitstelleref__REL), + fk_hydraulic_char_data=self.get_pk(row.hydr_kennwerteref__REL), + ) + self.session_tww.add(catchment_area_totals) + print(".", end="") + + def _import_hq_relation(self): + for row in self.session_interlis.query(self.model_classes_interlis.hq_relation): + hq_relation = self.create_or_update( + self.model_classes_tww_od.hq_relation, + **self.base_common(row), + # --- hq_relation --- + altitude=row.hoehe, + flow=row.abfluss, + flow_from=row.zufluss, + fk_overflow_char=self.get_pk(row.ueberlaufcharakteristikref__REL), + ) + self.session_tww.add(hq_relation) + print(".", end="") + + def _import_hydr_geomrelation(self): + for row in self.session_interlis.query(self.model_classes_interlis.hydr_geomrelation): + hydr_geom_relation = self.create_or_update( + self.model_classes_tww_od.hydr_geom_relation, + **self.base_common(row), + # --- hydr_geom_relation --- + water_depth=row.wassertiefe, + water_surface=row.wasseroberflaeche, + wet_cross_section_area=row.benetztequerschnittsflaeche, + fk_hydr_geometry=self.get_pk(row.hydr_geometrieref__REL), + ) + self.session_tww.add(hydr_geom_relation) + print(".", end="") + + def _import_hydr_geometrie(self): + for row in self.session_interlis.query(self.model_classes_interlis.hydr_geometrie): + hydr_geometry = self.create_or_update( + self.model_classes_tww_od.hydr_geometry, + **self.base_common(row), + # --- hydr_geometry --- + identifier=row.bezeichnung, + remark=row.bemerkung, + storage_volume=row.stauraum, + usable_capacity_storage=row.nutzinhalt_fangteil, + usable_capacity_treatment=row.nutzinhalt_klaerteil, + utilisable_capacity=row.nutzinhalt, + volume_pump_sump=row.volumen_pumpensumpf, + ) + self.session_tww.add(hydr_geometry) + print(".", end="") + + def _import_hydr_kennwerte(self): + for row in self.session_interlis.query(self.model_classes_interlis.hydr_kennwerte): + hydraulic_char_data = self.create_or_update( + self.model_classes_tww_od.hydraulic_char_data, + **self.base_common(row), + # --- hydraulic_char_data --- + qon=row.qan, + remark=row.bemerkung, + status=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_status, row.astatus + ), + aggregate_number=row.aggregatezahl, + delivery_height_geodaetic=row.foerderhoehe_geodaetisch, + identifier=row.bezeichnung, + is_overflowing=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_is_overflowing, row.springt_an + ), + main_weir_kind=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_main_weir_kind, row.hauptwehrart + ), + overcharge=row.mehrbelastung, + overflow_duration=row.ueberlaufdauer, + overflow_freight=row.ueberlauffracht, + overflow_frequency=row.ueberlaufhaeufigkeit, + overflow_volume=row.ueberlaufmenge, + pump_characteristics=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_pump_characteristics, + row.pumpenregime, + ), + pump_flow_max=row.foerderstrommax, + pump_flow_min=row.foerderstrommin, + q_discharge=row.qab, + fk_wastewater_node=self.get_pk(row.abwasserknotenref__REL), + fk_overflow_char=self.get_pk(row.ueberlaufcharakteristikref__REL), + fk_primary_direction=self.get_pk(row.primaerrichtungref__REL), + ) + self.session_tww.add(hydraulic_char_data) + print(".", end="") + + def _import_klara(self): + for row in self.session_interlis.query(self.model_classes_interlis.klara): + small_treatment_plant = self.create_or_update( + self.model_classes_tww_od.small_treatment_plant, + **self.base_common(row), + **self.wastewater_structure_common(row), + # --- small_treatment_plant --- + approval_number=row.bewilligungsnummer, + function=self.get_vl_code( + self.model_classes_tww_vl.small_treatment_plant_function, row.funktion + ), + installation_number=row.anlagenummer, + remote_monitoring=self.get_vl_code( + self.model_classes_tww_vl.small_treatment_plant_remote_monitoring, + row.fernueberwachung, + ), + ) + self.session_tww.add(small_treatment_plant) + print(".", end="") + + def _import_landwirtschaftsbetrieb(self): + for row in self.session_interlis.query(self.model_classes_interlis.landwirtschaftsbetrieb): + farm = self.create_or_update( + self.model_classes_tww_od.farm, + **self.base_common(row), + # --- farm --- + agriculture_arable_surface=row.nutzflaechelandwirtschaft, + cesspit_comment=row.guellegrubebemerkung, + cesspit_volume=self.get_vl_code( + self.model_classes_tww_vl.farm_cesspit_volume, row.guellegrubevolumen + ), + cesspit_volume_current=row.guellegrubevolumen_ist, + cesspit_volume_nominal=row.guellegrubevolumen_soll, + cesspit_volume_ww_treated=row.guellegrubevolumen_sw_behandelt, + cesspit_year_of_approval=row.guellegrubebewilligungsjahr, + conformity=self.get_vl_code( + self.model_classes_tww_vl.farm_conformity, row.konformitaet + ), + continuance=self.get_vl_code( + self.model_classes_tww_vl.farm_continuance, row.fortbestand + ), + continuance_comment=row.fortbestandbemerkung, + dung_heap_area_current=row.mistplatzflaeche_ist, + dung_heap_area_nominal=row.mistplatzflaeche_soll, + remark=row.bemerkung, + shepherds_hut_comment=row.hirtenhuettebemerkung, + shepherds_hut_population_equivalent=row.hirtenhuetteegw, + shepherds_hut_wastewater=self.get_vl_code( + self.model_classes_tww_vl.farm_shepherds_hut_wastewater, + row.hirtenhuetteabwasser, + ), + stable_cattle=self.get_vl_code( + self.model_classes_tww_vl.farm_stable_cattle, row.stallvieh + ), + stable_cattle_equivalent_other_cattle=row.stallgrossvieheinheit_fremdvieh, + stable_cattle_equivalent_own_cattle=row.stallgrossvieheinheit_eigenesvieh, + fk_building_group=self.get_pk(row.gebaeudegrupperef__REL), + ) + self.session_tww.add(farm) + print(".", end="") + + def _import_leapingwehr(self): + for row in self.session_interlis.query(self.model_classes_interlis.leapingwehr): + leapingweir = self.create_or_update( + self.model_classes_tww_od.leapingweir, + **self.base_common(row), + **self.overflow_common(row), + # --- leapingweir --- + length=row.laenge, + opening_shape=self.get_vl_code( + self.model_classes_tww_vl.leapingweir_opening_shape, row.oeffnungsform + ), + width=row.breite, + ) + self.session_tww.add(leapingweir) + print(".", end="") + + def _import_massnahme(self): + for row in self.session_interlis.query(self.model_classes_interlis.massnahme): + measure = self.create_or_update( + self.model_classes_tww_od.measure, + **self.base_common(row), + # --- measure --- + date_entry=row.datum_eingang, + description=row.beschreibung, + category=self.get_vl_code( + self.model_classes_tww_vl.measure_category, row.kategorie + ), + identifier=row.bezeichnung, + intervention_demand=row.handlungsbedarf, + line_geometry=row.linie, + link=row.verweis, + perimeter_geometry=row.perimeter, + priority=self.get_vl_code( + self.model_classes_tww_vl.measure_priority, row.prioritaet + ), + remark=row.bemerkung, + status=self.get_vl_code(self.model_classes_tww_vl.measure_status, row.astatus), + symbolpos_geometry=row.symbolpos, + total_cost=row.gesamtkosten, + year_implementation_effective=row.jahr_umsetzung_effektiv, + year_implementation_planned=row.jahr_umsetzung_geplant, + fk_responsible_entity=row.traegerschaftref, + fk_responsible_start=row.verantwortlich_ausloesungref, + ) + self.session_tww.add(measure) + print(".", end="") + + def _import_mechanischevorreinigung(self): + for row in self.session_interlis.query( + self.model_classes_interlis.mechanischevorreinigung + ): + mechanical_pretreatment = self.create_or_update( + self.model_classes_tww_od.mechanical_pretreatment, + **self.base_common(row), + # --- mechanical_pretreatment --- + identifier=row.bezeichnung, + kind=self.get_vl_code( + self.model_classes_tww_vl.mechanical_pretreatment_kind, row.art + ), + remark=row.bemerkung, + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(mechanical_pretreatment) + print(".", end="") + + def _import_messgeraet(self): + for row in self.session_interlis.query(self.model_classes_interlis.messgeraet): + measuring_device = self.create_or_update( + self.model_classes_tww_od.measuring_device, + **self.base_common(row), + # --- measuring_device --- + serial_number=row.seriennummer, + brand=row.fabrikat, + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.measuring_device_kind, row.art), + remark=row.bemerkung, + fk_measuring_point=self.get_pk(row.messstelleref__REL), + ) + self.session_tww.add(measuring_device) + print(".", end="") + + def _import_messreihe(self): + for row in self.session_interlis.query(self.model_classes_interlis.messreihe): + measurement_series = self.create_or_update( + self.model_classes_tww_od.measurement_series, + **self.base_common(row), + # --- measurement_series --- + dimension=row.dimension, + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.measurement_series_kind, row.art), + remark=row.bemerkung, + fk_measuring_point=self.get_pk(row.messstelleref__REL), + fk_wastewater_networkelement=self.get_pk(row.abwassernetzelementref__REL), + ) + self.session_tww.add(measurement_series) + print(".", end="") + + def _import_messresultat(self): + for row in self.session_interlis.query(self.model_classes_interlis.messresultat): + measurement_result = self.create_or_update( + self.model_classes_tww_od.measurement_result, + **self.base_common(row), + # --- measurement_result --- + identifier=row.bezeichnung, + measurement_type=self.get_vl_code( + self.model_classes_tww_vl.measurement_result_measurement_type, row.messart + ), + measuring_duration=row.messdauer, + remark=row.bemerkung, + time=row.zeit, + value=row.wert, + fk_measuring_device=self.get_pk(row.messgeraetref__REL), + fk_measurement_series=self.get_pk(row.messreiheref__REL), + ) + self.session_tww.add(measurement_result) + print(".", end="") + + def _import_messstelle(self): + for row in self.session_interlis.query(self.model_classes_interlis.messstelle): + measuring_point = self.create_or_update( + self.model_classes_tww_od.measuring_point, + **self.base_common(row), + # --- measuring_point --- + # change to value list reference + # purpose=row.zweck, + purpose=self.get_vl_code( + self.model_classes_tww_vl.measuring_point_purpose, row.zweck + ), + remark=row.bemerkung, + # change to value list reference + # damming_device=row.staukoerper, + damming_device=self.get_vl_code( + self.model_classes_tww_vl.measuring_point_damming_device, row.staukoerper + ), + identifier=row.bezeichnung, + # kind is not a value list here + kind=row.art, + situation_geometry=row.lage, + fk_operator=row.betreiberref, + fk_waste_water_treatment_plant=self.get_pk(row.abwasserreinigungsanlageref__REL), + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(measuring_point) + print(".", end="") + + def _import_mutation(self): + for row in self.session_interlis.query(self.model_classes_interlis.mutation): + mutation = self.create_or_update( + self.model_classes_tww_od.mutation, + **self.base_common(row), + # --- mutation --- + attribute=row.attribut, + classname=row.klasse, + date_mutation=row.mutationsdatum, + date_time=row.aufnahmedatum, + kind=self.get_vl_code(self.model_classes_tww_vl.mutation_kind, row.art), + last_value=row.letzter_wert, + object=row.objekt, + recorded_by=row.aufnehmer, + remark=row.bemerkung, + user_system=row.systembenutzer, + ) + self.session_tww.add(mutation) + print(".", end="") + + def _import_reservoir(self): + for row in self.session_interlis.query(self.model_classes_interlis.reservoir): + reservoir = self.create_or_update( + self.model_classes_tww_od.reservoir, + **self.base_common(row), + **self.connection_object_common(row), + # --- reservoir --- + location_name=row.standortname, + situation_geometry=row.lage, + ) + self.session_tww.add(reservoir) + print(".", end="") + + def _import_retentionskoerper(self): + for row in self.session_interlis.query(self.model_classes_interlis.retentionskoerper): + retention_body = self.create_or_update( + self.model_classes_tww_od.retention_body, + **self.base_common(row), + # --- retention_body --- + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.retention_body_kind, row.art), + remark=row.bemerkung, + volume=row.retention_volumen, + fk_infiltration_installation=self.get_pk(row.versickerungsanlageref__REL), + ) + self.session_tww.add(retention_body) + print(".", end="") + + def _import_rohrprofil_geometrie(self): + for row in self.session_interlis.query(self.model_classes_interlis.rohrprofil_geometrie): + profile_geometry = self.create_or_update( + self.model_classes_tww_od.profile_geometry, + **self.base_common(row), + # --- profile_geometry --- + sequence=row.reihenfolge, + x=row.x, + y=row.y, + fk_pipe_profile=self.get_pk(row.rohrprofilref__REL), + ) + self.session_tww.add(profile_geometry) + print(".", end="") + + def _import_rueckstausicherung(self): + for row in self.session_interlis.query(self.model_classes_interlis.rueckstausicherung): + backflow_prevention = self.create_or_update( + self.model_classes_tww_od.backflow_prevention, + **self.base_common(row), + **self.structure_part_common(row), + # --- backflow_prevention --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code(self.model_classes_tww_vl.backflow_prevention_kind, row.art), + year_of_replacement=row.ersatzjahr, + fk_throttle_shut_off_unit=self.get_pk(row.absperr_drosselorganref), + fk_pump=self.get_pk(row.foerderaggregatref), + ) + self.session_tww.add(backflow_prevention) + print(".", end="") + + def _import_stammkarte(self): + for row in self.session_interlis.query(self.model_classes_interlis.stammkarte): + log_card = self.create_or_update( + self.model_classes_tww_od.log_card, + **self.base_common(row), + # --- log_card --- + control_remote_control=self.get_vl_code( + self.model_classes_tww_vl.log_card_control_remote_control, + row.steuerung_fernwirkung, + ), + information_source=self.get_vl_code( + self.model_classes_tww_vl.log_card_information_source, row.informationsquelle + ), + person_in_charge=row.sachbearbeiter, + remark=row.bemerkung, + fk_pwwf_wastewater_node=self.get_pk(row.paa_knotenref__REL), + fk_agency=row.bueroref, + fk_location_municipality=row.standortgemeinderef, + ) + self.session_tww.add(log_card) + print(".", end="") + + def _import_streichwehr(self): + for row in self.session_interlis.query(self.model_classes_interlis.streichwehr): + prank_weir = self.create_or_update( + self.model_classes_tww_od.prank_weir, + **self.base_common(row), + **self.overflow_common(row), + # --- prank_weir --- + hydraulic_overflow_length=row.hydrueberfalllaenge, + level_max=row.kotemax, + level_min=row.kotemin, + weir_edge=self.get_vl_code( + self.model_classes_tww_vl.prank_weir_weir_edge, row.ueberfallkante + ), + weir_kind=self.get_vl_code( + self.model_classes_tww_vl.prank_weir_weir_kind, row.wehr_art + ), + ) + self.session_tww.add(prank_weir) + print(".", end="") + + def _import_ueberlaufcharakteristik(self): + for row in self.session_interlis.query( + self.model_classes_interlis.ueberlaufcharakteristik + ): + overflow_char = self.create_or_update( + self.model_classes_tww_od.overflow_char, + **self.base_common(row), + # --- overflow_char --- + identifier=row.bezeichnung, + kind_overflow_char=self.get_vl_code( + self.model_classes_tww_vl.overflow_char_kind_overflow_char, row.kennlinie_typ + ), + remark=row.bemerkung, + ) + self.session_tww.add(overflow_char) + print(".", end="") + + def _import_unterhalt(self): + for row in self.session_interlis.query(self.model_classes_interlis.unterhalt): + maintenance = self.create_or_update( + self.model_classes_tww_od.maintenance, + **self.base_common(row), + **self.maintenance_event_common(row), + # --- maintenance --- + kind=self.get_vl_code(self.model_classes_tww_vl.maintenance_kind, row.art), + ) + self.session_tww.add(maintenance) + print(".", end="") + + def _import_versickerungsbereich(self): + for row in self.session_interlis.query(self.model_classes_interlis.versickerungsbereich): + infiltration_zone = self.create_or_update( + self.model_classes_tww_od.infiltration_zone, + **self.base_common(row), + **self.zone_common(row), + # --- infiltration_zone --- + infiltration_capacity=self.get_vl_code( + self.model_classes_tww_vl.infiltration_zone_infiltration_capacity, + row.versickerungsmoeglichkeit, + ), + perimeter_geometry=row.perimeter, + ) + self.session_tww.add(infiltration_zone) + print(".", end="") + + def _import_rohrprofil(self): + for row in self.session_interlis.query(self.model_classes_interlis.rohrprofil): + pipe_profile = self.create_or_update( + self.model_classes_tww_od.pipe_profile, + **self.base_common(row), + # --- pipe_profile --- + height_width_ratio=row.hoehenbreitenverhaeltnis, + identifier=row.bezeichnung, + profile_type=self.get_vl_code( + self.model_classes_tww_od.pipe_profile_profile_type, row.profiltyp + ), + remark=row.bemerkung, + ) + self.session_tww.add(pipe_profile) + print(".", end="") + + def _import_haltungspunkt(self): + for row in self.session_interlis.query(self.model_classes_interlis.haltungspunkt): + reach_point = self.create_or_update( + self.model_classes_tww_od.reach_point, + **self.base_common(row), + # --- reach_point --- + elevation_accuracy=self.get_vl_code( + self.model_classes_tww_od.reach_point_elevation_accuracy, row.hoehengenauigkeit + ), + fk_wastewater_networkelement=self.get_pk(row.abwassernetzelementref__REL), + identifier=row.bezeichnung, + level=row.kote, + outlet_shape=self.get_vl_code( + self.model_classes_tww_od.reach_point_outlet_shape, row.auslaufform + ), + position_of_connection=row.lage_anschluss, + remark=row.bemerkung, + situation3d_geometry=ST_Force3D(row.lage), + ) + self.session_tww.add(reach_point) + print(".", end="") + + def _import_haltung_alternativverlauf(self): + for row in self.session_interlis.query( + self.model_classes_interlis.haltung_alternativverlauf + ): + reach_progression_alternative = self.create_or_update( + self.model_classes_tww_od.reach_progression_alternative, + obj_id=row.t_ili_tid, + plantype=self.get_vl_code( + self.model_classes_tww_od.reach_progression_alternative_plantype, row.plantyp + ), + progression_geometry=row.verlauf, + fk_reach=self.get_pk(row.haltungref__REL), + ) + self.session_tww.add(reach_progression_alternative) + print(".", end="") + + def _import_abwasserknoten(self): + for row in self.session_interlis.query(self.model_classes_interlis.abwasserknoten): + wastewater_node = self.create_or_update( + self.model_classes_tww_od.wastewater_node, + **self.base_common(row), + # --- wastewater_networkelement --- + **self.wastewater_networkelement_common(row), + # --- wastewater_node --- + # fk_hydr_geometry=row.REPLACE_ME, # TODO : NOT MAPPED + backflow_level_current=row.rueckstaukote_ist, + bottom_level=row.sohlenkote, + situation3d_geometry=ST_Force3D(row.lage), + ) + self.session_tww.add(wastewater_node) + print(".", end="") + + def _import_haltung(self): + for row in self.session_interlis.query(self.model_classes_interlis.haltung): + reach = self.create_or_update( + self.model_classes_tww_od.reach, + **self.base_common(row), + # --- wastewater_networkelement --- + **self.wastewater_networkelement_common(row), + # --- reach --- + clear_height=row.lichte_hoehe, + coefficient_of_friction=row.reibungsbeiwert, + # TODO : NOT MAPPED VSA-DSS 3D + # self.get_vl_code( + # self.model_classes_tww_od.wastewater_structure_elevation_determination, row.hoehenbestimmung + # ), + fk_pipe_profile=self.get_pk(row.rohrprofilref__REL), + fk_reach_point_from=self.get_pk(row.vonhaltungspunktref__REL), + fk_reach_point_to=self.get_pk(row.nachhaltungspunktref__REL), + horizontal_positioning=self.get_vl_code( + self.model_classes_tww_od.reach_horizontal_positioning, row.lagebestimmung + ), + inside_coating=self.get_vl_code( + self.model_classes_tww_od.reach_inside_coating, row.innenschutz + ), + length_effective=row.laengeeffektiv, + material=self.get_vl_code(self.model_classes_tww_vl.reach_material, row.material), + progression3d_geometry=ST_Force3D(row.verlauf), + reliner_material=self.get_vl_code( + self.model_classes_tww_od.reach_reliner_material, row.reliner_material + ), + reliner_nominal_size=row.reliner_nennweite, + relining_construction=self.get_vl_code( + self.model_classes_tww_od.reach_relining_construction, row.reliner_bautechnik + ), + relining_kind=self.get_vl_code( + self.model_classes_tww_od.reach_relining_kind, row.reliner_art + ), + ring_stiffness=row.ringsteifigkeit, + slope_building_plan=row.plangefaelle, # TODO : check, does this need conversion ? + wall_roughness=row.wandrauhigkeit, + ) + self.session_tww.add(reach) + print(".", end="") + + def _import_trockenwetterfallrohr(self): + for row in self.session_interlis.query(self.model_classes_interlis.trockenwetterfallrohr): + dryweather_downspout = self.create_or_update( + self.model_classes_tww_od.dryweather_downspout, + **self.base_common(row), + # --- structure_part --- + **self.structure_part_common(row), + # --- dryweather_downspout --- + diameter=row.durchmesser, + ) + self.session_tww.add(dryweather_downspout) + print(".", end="") + + def _import_einstiegshilfe(self): + for row in self.session_interlis.query(self.model_classes_interlis.einstiegshilfe): + access_aid = self.create_or_update( + self.model_classes_tww_od.access_aid, + **self.base_common(row), + # --- structure_part --- + **self.structure_part_common(row), + # --- access_aid --- + kind=self.get_vl_code(self.model_classes_tww_vl.access_aid_kind, row.art), + ) + self.session_tww.add(access_aid) + print(".", end="") + + def _import_trockenwetterrinne(self): + for row in self.session_interlis.query(self.model_classes_interlis.trockenwetterrinne): + dryweather_flume = self.create_or_update( + self.model_classes_tww_od.dryweather_flume, + **self.base_common(row), + # --- structure_part --- + **self.structure_part_common(row), + # --- dryweather_flume --- + material=self.get_vl_code( + self.model_classes_tww_od.dryweather_flume_material, row.material + ), + ) + self.session_tww.add(dryweather_flume) + print(".", end="") + + def _import_deckel(self): + for row in self.session_interlis.query(self.model_classes_interlis.deckel): + cover = self.create_or_update( + self.model_classes_tww_od.cover, + **self.base_common(row), + # --- structure_part --- + **self.structure_part_common(row), + # --- cover --- + brand=row.fabrikat, + cover_shape=self.get_vl_code( + self.model_classes_tww_vl.cover_cover_shape, row.deckelform + ), + diameter=row.durchmesser, + fastening=self.get_vl_code( + self.model_classes_tww_vl.cover_fastening, row.verschluss + ), + level=row.kote, + material=self.get_vl_code(self.model_classes_tww_vl.cover_material, row.material), + positional_accuracy=self.get_vl_code( + self.model_classes_tww_od.cover_positional_accuracy, row.lagegenauigkeit + ), + situation3d_geometry=ST_Force3D(row.lage), + sludge_bucket=self.get_vl_code( + self.model_classes_tww_od.cover_sludge_bucket, row.schlammeimer + ), + venting=self.get_vl_code(self.model_classes_tww_vl.cover_venting, row.entlueftung), + ) + self.session_tww.add(cover) + print(".", end="") + + def _import_bankett(self): + for row in self.session_interlis.query(self.model_classes_interlis.bankett): + benching = self.create_or_update( + self.model_classes_tww_od.benching, + **self.base_common(row), + # --- structure_part --- + **self.structure_part_common(row), + # --- benching --- + kind=self.get_vl_code(self.model_classes_tww_vl.benching_kind, row.art), + ) + self.session_tww.add(benching) + print(".", end="") + + def _import_spuelstutzen(self): + for row in self.session_interlis.query(self.model_classes_interlis.spuelstutzen): + flushing_nozzle = self.create_or_update( + self.model_classes_tww_od.flushing_nozzle, + **self.base_common(row), + **self.structure_part_common(row), + # --- flushing_nozzle --- + situation_geometry=row.lage, + ) + self.session_tww.add(flushing_nozzle) + print(".", end="") + + def _import_abwasserbauwerk_symbol(self): + for row in self.session_interlis.query(self.model_classes_interlis.abwasserbauwerk_symbol): + wastewater_structure_symbol = self.create_or_update( + self.model_classes_tww_od.wastewater_structure_symbol, + # --- wastewater_structure_symbol --- + obj_id=row.t_ili_tid, + plantype=self.get_vl_code( + self.model_classes_tww_vl.wastewater_structure_symbol_plantype, row.plantyp + ), + symbol_scaling_height=row.symbolskalierunghoch, + symbol_scaling_width=row.symbolskalierunglaengs, + symbolori=row.symbolori, + symbolpos_geometry=row.symbolpos, + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(wastewater_structure_symbol) + print(".", end="") + + def _import_untersuchung(self): + for row in self.session_interlis.query(self.model_classes_interlis.untersuchung): + examination = self.create_or_update( + self.model_classes_tww_od.examination, + **self.base_common(row), + # --- maintenance_event --- + base_data=row.datengrundlage, + cost=row.kosten, + data_details=row.detaildaten, + duration=row.dauer, + # in VSA-KEK 2020 in class maintenance_event instead of examination + # fk_operating_company=( + # row.ausfuehrende_firmaref if row.ausfuehrende_firmaref else None + # ), + identifier=row.bezeichnung, + operator=row.ausfuehrender, + reason=row.grund, + remark=row.bemerkung, + result=row.ergebnis, + status=self.get_vl_code( + self.model_classes_tww_vl.maintenance_event_status, row.astatus + ), + time_point=row.zeitpunkt, + # --- examination --- + equipment=row.geraet, + fk_reach_point=row.haltungspunktref if row.haltungspunktref else None, + from_point_identifier=row.vonpunktbezeichnung, + inspected_length=row.inspizierte_laenge, + recording_type=self.get_vl_code( + self.model_classes_tww_od.examination_recording_type, row.erfassungsart + ), + to_point_identifier=row.bispunktbezeichnung, + vehicle=row.fahrzeug, + videonumber=row.videonummer, + weather=self.get_vl_code( + self.model_classes_tww_vl.examination_weather, row.witterung + ), + ) + self.session_tww.add(examination) + + # In TWW, relation between maintenance_event and wastewater_structure is done with + # an association table instead of a foreign key on maintenance_event. + # NOTE : this may change in future versions of VSA_KEK + if row.abwasserbauwerkref: + # TODO : for now, this will not work unless the related wastewaterstructures are part of the import, + # as ili2pg imports dangling references as NULL. + # The day ili2pg works, we probably need to double-check whether the referenced wastewater structure exists prior + # to creating this association. + # Soft matching based on from/to_point_identifier will be done in the GUI data checking process. + exam_to_wastewater_structure = self.create_or_update( + self.model_classes_tww_od.re_maintenance_event_wastewater_structure, + fk_wastewater_structure=row.abwasserbauwerkref, + fk_maintenance_event=row.t_ili_tid, + ) + self.session_tww.add(exam_to_wastewater_structure) + + print(".", end="") + + def _import_normschachtschaden(self): + for row in self.session_interlis.query(self.model_classes_interlis.normschachtschaden): + damage_manhole = self.create_or_update( + self.model_classes_tww_od.damage_manhole, + **self.base_common(row), + # --- damage --- + # to check Adaption VSA-KEK 2020 moved to superclass schaden + comments=row.anmerkung, + # to check Adaption VSA-KEK 2020 moved to superclass schaden + connection=self.get_vl_code( + self.model_classes_tww_vl.damage_connection, row.verbindung + ), + manhole_damage_begin=row.schadenlageanfang, + manhole_damage_end=row.schadenlageende, + line_damage=row.streckenschaden, + manhole_distance=row.distanz, + fk_examination=self.get_pk(row.untersuchungref__REL), + manhole_quantification1=row.quantifizierung1, + manhole_quantification2=row.quantifizierung2, + # to check Adaption VSA-KEK 2020 moved to superclass schaden + single_damage_class=self.get_vl_code( + self.model_classes_tww_od.damage_single_damage_class, row.einzelschadenklasse + ), + # to check Adaption VSA-KEK 2020 moved to superclass schaden + video_counter=row.videozaehlerstand, + # to check Adaption VSA-KEK 2020 moved to superclass schaden + view_parameters=row.ansichtsparameter, + # --- damage_manhole --- + manhole_damage_code=self.get_vl_code( + self.model_classes_tww_od.damage_manhole_manhole_damage_code, + row.schachtschadencode, + ), + manhole_shaft_area=self.get_vl_code( + self.model_classes_tww_od.damage_manhole_manhole_shaft_area, row.schachtbereich + ), + ) + self.session_tww.add(damage_manhole) + print(".", end="") + + def _import_kanalschaden(self): + for row in self.session_interlis.query(self.model_classes_interlis.kanalschaden): + # Note : in TWW, some attributes are on the base damage class, + # while they are on the normschachtschaden/kanalschaden subclasses + # in the ili2pg mode. + # Concerned attributes : distanz, quantifizierung1, quantifizierung2, schadenlageanfang, schadenlageende + damage_channel = self.create_or_update( + self.model_classes_tww_od.damage_channel, + **self.base_common(row), + # --- damage --- + comments=row.anmerkung, + connection=self.get_vl_code( + self.model_classes_tww_vl.damage_connection, row.verbindung + ), + channel_damage_begin=row.schadenlageanfang, + channel_damage_end=row.schadenlageende, + line_damage=row.streckenschaden, + channel_distance=row.distanz, + fk_examination=self.get_pk(row.untersuchungref__REL), + channel_quantification1=row.quantifizierung1, + channel_quantification2=row.quantifizierung2, + single_damage_class=self.get_vl_code( + self.model_classes_tww_od.damage_single_damage_class, row.einzelschadenklasse + ), + video_counter=row.videozaehlerstand, + view_parameters=row.ansichtsparameter, + # --- damage_channel --- + channel_damage_code=self.get_vl_code( + self.model_classes_tww_od.damage_channel_channel_damage_code, + row.kanalschadencode, + ), + ) + self.session_tww.add(damage_channel) + print(".", end="") + + def _import_datentraeger(self): + for row in self.session_interlis.query(self.model_classes_interlis.datentraeger): + data_media = self.create_or_update( + self.model_classes_tww_od.data_media, + **self.base_common(row), + # --- data_media --- + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.data_media_kind, row.art), + location=row.standort, + path=row.pfad, + remark=row.bemerkung, + ) + self.session_tww.add(data_media) + print(".", end="") + + def _import_datei(self): + for row in self.session_interlis.query(self.model_classes_interlis.datei): + file_table_row = self.create_or_update( + self.model_classes_tww_od.file, + **self.base_common(row), + # --- file --- + fk_data_media=self.get_pk(row.datentraegerref__REL), + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.file_kind, row.art), + object=row.objekt, + path_relative=row.relativpfad, + remark=row.bemerkung, + classname=self.get_vl_code(self.model_classes_tww_vl.file_classname, row.klasse), + ) + + self.session_tww.add(file_table_row) + print(".", end="") + + def _import_erhaltungsereignis_abwasserbauwerkassoc(self): + for row in self.session_interlis.query( + self.model_classes_interlis.erhaltungsereignis_abwasserbauwerkassoc + ): + + re_maintenance_event_wastewater_structure = self.create_or_update( + self.model_classes_tww_od.re_maintenance_event_wastewater_structure, + # this class does not inherit base_commmon + # **self.base_common(row), + # --- re_maintenance_event_wastewater_structure --- + fk_maintenance_event=self.get_pk( + row.erhaltungsereignis_abwasserbauwerkassocref__REL + ), + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + + self.session_tww.add(re_maintenance_event_wastewater_structure) + print(".", end="") + + def _import_gebaeudegruppe_entsorgungassoc(self): + for row in self.session_interlis.query( + self.model_classes_interlis.gebaeudegruppe_entsorgungassoc + ): + re_building_group_disposal = self.create_or_update( + self.model_classes_tww_od.re_building_group_disposal, + # this class does not inherit base_commmon + # **self.base_common(row), + # --- re_building_group_disposal --- + fk_building_group=self.get_pk(row.gebaeudegruppe_entsorgungassocref__REL), + fk_disposal=self.get_pk(row.entsorgungref__REL), + ) + + self.session_tww.add(re_building_group_disposal) + print(".", end="") + + def _check_for_stop(self): + if self.callback_progress_done: + self.callback_progress_done() diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_base.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_base.py new file mode 100644 index 0000000..ad05e33 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_base.py @@ -0,0 +1,20 @@ +from sqlalchemy.ext.automap import automap_base + +from ..utils import tww_sqlalchemy + + +class ModelBase: + """ + Base class for datamodels + All tables will be loaded from the respective schemas (pg2ili, tww_od, tww_vl) as a SqlAlchemy ORM class. + Only table specific relationships (e.g. inheritance) need to be manually + defined here. Other attributes will be loaded automatically. + """ + + def __init__(self, schema): + self.Base = automap_base() + self.schema = schema + + def classes(self): + tww_sqlalchemy.prepare_automap_base(self.Base, self.schema) + return self.Base.classes diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_dss.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_dss.py new file mode 100644 index 0000000..a8a8672 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_dss.py @@ -0,0 +1,351 @@ +from .. import config +from .model_interlis_sia405_abwasser import ModelInterlisSia405Abwasser + + +class ModelInterlisDss(ModelInterlisSia405Abwasser): + def __init__(self): + super().__init__() + + class anschlussobjekt(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "anschlussobjekt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.anschlussobjekt = anschlussobjekt + + class erhaltungsereignis(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "erhaltungsereignis" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.erhaltungsereignis = erhaltungsereignis + + class oberflaechenabflussparameter(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "oberflaechenabflussparameter" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.oberflaechenabflussparameter = oberflaechenabflussparameter + + class ueberlauf(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "ueberlauf" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ueberlauf = ueberlauf + + class zone(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "azone" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.zone = zone + + class abwasserreinigungsanlage(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "abwasserreinigungsanlage" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.abwasserreinigungsanlage = abwasserreinigungsanlage + + class araenergienutzung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "araenergienutzung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.araenergienutzung = araenergienutzung + + class abwasserbehandlung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "abwasserbehandlung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.abwasserbehandlung = abwasserbehandlung + + class schlammbehandlung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "schlammbehandlung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.schlammbehandlung = schlammbehandlung + + class arabauwerk(ModelInterlisSia405Abwasser.abwasserbauwerk): + __tablename__ = "arabauwerk" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.arabauwerk = arabauwerk + + class steuerungszentrale(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "steuerungszentrale" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.steuerungszentrale = steuerungszentrale + + class abflusslose_toilette(ModelInterlisSia405Abwasser.abwasserbauwerk): + __tablename__ = "abflusslose_toilette" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.abflusslose_toilette = abflusslose_toilette + + class absperr_drosselorgan(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "absperr_drosselorgan" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.absperr_drosselorgan = absperr_drosselorgan + + class beckenentleerung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "beckenentleerung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.beckenentleerung = beckenentleerung + + class beckenreinigung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "beckenreinigung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.beckenreinigung = beckenreinigung + + class biol_oekol_gesamtbeurteilung(erhaltungsereignis): + __tablename__ = "biol_oekol_gesamtbeurteilung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.biol_oekol_gesamtbeurteilung = biol_oekol_gesamtbeurteilung + + class brunnen(anschlussobjekt): + __tablename__ = "brunnen" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.brunnen = brunnen + + class ezg_parameter_allg(oberflaechenabflussparameter): + __tablename__ = "ezg_parameter_allg" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ezg_parameter_allg = ezg_parameter_allg + + class ezg_parameter_mouse1(oberflaechenabflussparameter): + __tablename__ = "ezg_parameter_mouse1" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ezg_parameter_mouse1 = ezg_parameter_mouse1 + + class einzelflaeche(anschlussobjekt): + __tablename__ = "einzelflaeche" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.einzelflaeche = einzelflaeche + + class einzugsgebiet(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "einzugsgebiet" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.einzugsgebiet = einzugsgebiet + + class einzugsgebiet_text(ModelInterlisSia405Abwasser.sia405_textpos): + __tablename__ = "einzugsgebiet_text" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.einzugsgebiet_text = einzugsgebiet_text + + class elektrischeeinrichtung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "elektrischeeinrichtung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.elektrischeeinrichtung = elektrischeeinrichtung + + class elektromechanischeausruestung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "elektromechanischeausruestung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.elektromechanischeausruestung = elektromechanischeausruestung + + class entsorgung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "entsorgung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.entsorgung = entsorgung + + class entwaesserungssystem(zone): + __tablename__ = "entwaesserungssystem" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.entwaesserungssystem = entwaesserungssystem + + class feststoffrueckhalt(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "feststoffrueckhalt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.feststoffrueckhalt = feststoffrueckhalt + + class foerderaggregat(ueberlauf): + __tablename__ = "foerderaggregat" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.foerderaggregat = foerderaggregat + + class gebaeude(anschlussobjekt): + __tablename__ = "gebaeude" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeude = gebaeude + + class gebaeudegruppe(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "gebaeudegruppe" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeudegruppe = gebaeudegruppe + + class gebaeudegruppe_baugwr(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "gebaeudegruppe_baugwr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeudegruppe_baugwr = gebaeudegruppe_baugwr + + class gesamteinzugsgebiet(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "gesamteinzugsgebiet" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gesamteinzugsgebiet = gesamteinzugsgebiet + + class hq_relation(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hq_relation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hq_relation = hq_relation + + class hydr_geomrelation(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hydr_geomrelation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hydr_geomrelation = hydr_geomrelation + + class hydr_geometrie(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hydr_geometrie" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hydr_geometrie = hydr_geometrie + + class hydr_kennwerte(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hydr_kennwerte" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hydr_kennwerte = hydr_kennwerte + + class klara(ModelInterlisSia405Abwasser.abwasserbauwerk): + __tablename__ = "klara" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.klara = klara + + class landwirtschaftsbetrieb(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "landwirtschaftsbetrieb" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.landwirtschaftsbetrieb = landwirtschaftsbetrieb + + class leapingwehr(ueberlauf): + __tablename__ = "leapingwehr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.leapingwehr = leapingwehr + + class massnahme(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "massnahme" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.massnahme = massnahme + + class mechanischevorreinigung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "mechanischevorreinigung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.mechanischevorreinigung = mechanischevorreinigung + + class messgeraet(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messgeraet" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messgeraet = messgeraet + + class messreihe(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messreihe" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messreihe = messreihe + + class messresultat(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messresultat" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messresultat = messresultat + + class messstelle(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messstelle" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messstelle = messstelle + + class mutation(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "mutation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.mutation = mutation + + class reservoir(anschlussobjekt): + __tablename__ = "reservoir" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.reservoir = reservoir + + class retentionskoerper(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "retentionskoerper" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.retentionskoerper = retentionskoerper + + class rohrprofil_geometrie(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "rohrprofil_geometrie" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.rohrprofil_geometrie = rohrprofil_geometrie + + class rueckstausicherung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "rueckstausicherung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.rueckstausicherung = rueckstausicherung + + class stammkarte(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "stammkarte" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.stammkarte = stammkarte + + class streichwehr(ueberlauf): + __tablename__ = "streichwehr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.streichwehr = streichwehr + + class ueberlaufcharakteristik(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "ueberlaufcharakteristik" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ueberlaufcharakteristik = ueberlaufcharakteristik + + class unterhalt(erhaltungsereignis): + __tablename__ = "unterhalt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.unterhalt = unterhalt + + class versickerungsbereich(zone): + __tablename__ = "versickerungsbereich" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.versickerungsbereich = versickerungsbereich + + class erhaltungsereignis_abwasserbauwerkassoc(self.Base): + __tablename__ = "erhaltungsereignis_abwasserbauwerkassoc" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.erhaltungsereignis_abwasserbauwerkassoc = ( + erhaltungsereignis_abwasserbauwerkassoc + ) + + class gebaeudegruppe_entsorgungassoc(self.Base): + __tablename__ = "gebaeudegruppe_entsorgungassoc" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeudegruppe_entsorgungassoc = gebaeudegruppe_entsorgungassoc diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py new file mode 100644 index 0000000..550d2a5 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py @@ -0,0 +1,191 @@ +from .. import config +from .model_base import ModelBase + + +class ModelInterlisSia405Abwasser(ModelBase): + def __init__(self): + super().__init__(config.ABWASSER_SCHEMA) + + class baseclass(self.Base): + __tablename__ = "baseclass" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.baseclass = baseclass + + class sia405_baseclass(baseclass): + __tablename__ = "sia405_baseclass" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.sia405_baseclass = sia405_baseclass + + class vsa_baseclass(sia405_baseclass): + __tablename__ = "vsa_baseclass" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.vsa_baseclass = vsa_baseclass + + class organisation(sia405_baseclass): + __tablename__ = "organisation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.organisation = organisation + + class abwasserbauwerk(vsa_baseclass): + __tablename__ = "abwasserbauwerk" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.abwasserbauwerk = abwasserbauwerk + + class kanal(abwasserbauwerk): + __tablename__ = "kanal" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.kanal = kanal + + class normschacht(abwasserbauwerk): + __tablename__ = "normschacht" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.normschacht = normschacht + + class einleitstelle(abwasserbauwerk): + __tablename__ = "einleitstelle" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.einleitstelle = einleitstelle + + class spezialbauwerk(abwasserbauwerk): + __tablename__ = "spezialbauwerk" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.spezialbauwerk = spezialbauwerk + + class versickerungsanlage(abwasserbauwerk): + __tablename__ = "versickerungsanlage" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.versickerungsanlage = versickerungsanlage + + class rohrprofil(vsa_baseclass): + __tablename__ = "rohrprofil" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.rohrprofil = rohrprofil + + class abwassernetzelement(vsa_baseclass): + __tablename__ = "abwassernetzelement" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.abwassernetzelement = abwassernetzelement + + class haltungspunkt(vsa_baseclass): + __tablename__ = "haltungspunkt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.haltungspunkt = haltungspunkt + + class abwasserknoten(abwassernetzelement): + __tablename__ = "abwasserknoten" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.abwasserknoten = abwasserknoten + + class haltung(abwassernetzelement): + __tablename__ = "haltung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.haltung = haltung + + class haltung_alternativverlauf(baseclass): + __tablename__ = "haltung_alternativverlauf" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.haltung_alternativverlauf = haltung_alternativverlauf + + class bauwerksteil(vsa_baseclass): + __tablename__ = "bauwerksteil" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.bauwerksteil = bauwerksteil + + class trockenwetterfallrohr(bauwerksteil): + __tablename__ = "trockenwetterfallrohr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.trockenwetterfallrohr = trockenwetterfallrohr + + class einstiegshilfe(bauwerksteil): + __tablename__ = "einstiegshilfe" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.einstiegshilfe = einstiegshilfe + + class trockenwetterrinne(bauwerksteil): + __tablename__ = "trockenwetterrinne" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.trockenwetterrinne = trockenwetterrinne + + class deckel(bauwerksteil): + __tablename__ = "deckel" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.deckel = deckel + + class bankett(bauwerksteil): + __tablename__ = "bankett" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.bankett = bankett + + class spuelstutzen(bauwerksteil): + __tablename__ = "spuelstutzen" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.spuelstutzen = spuelstutzen + + # TEXTS + + class textpos(baseclass): + __tablename__ = "textpos" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.textpos = textpos + + class sia405_textpos(textpos): + __tablename__ = "sia405_textpos" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.sia405_textpos = sia405_textpos + + class haltung_text(sia405_textpos): + __tablename__ = "haltung_text" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.haltung_text = haltung_text + + class abwasserbauwerk_text(sia405_textpos): + __tablename__ = "abwasserbauwerk_text" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.abwasserbauwerk_text = abwasserbauwerk_text + + # SymbolPos + + class symbolpos(baseclass): + __tablename__ = "symbolpos" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.symbolpos = symbolpos + + class sia405_symbolpos(symbolpos): + __tablename__ = "sia405_symbolpos" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.sia405_symbolpos = sia405_symbolpos + + class abwasserbauwerk_symbol(sia405_symbolpos): + __tablename__ = "abwasserbauwerk_symbol" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.abwasserbauwerk_symbol = abwasserbauwerk_symbol diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_vsa_kek.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_vsa_kek.py new file mode 100644 index 0000000..767e74d --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_interlis_vsa_kek.py @@ -0,0 +1,49 @@ +from .. import config +from .model_interlis_sia405_abwasser import ModelInterlisSia405Abwasser + + +class ModelInterlisVsaKek(ModelInterlisSia405Abwasser): + def __init__(self): + super().__init__() + + class erhaltungsereignis(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "erhaltungsereignis" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.erhaltungsereignis = erhaltungsereignis + + class untersuchung(ModelInterlisVsaKek.erhaltungsereignis): + __tablename__ = "untersuchung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.untersuchung = untersuchung + + class schaden(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "schaden" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.schaden = schaden + + class normschachtschaden(schaden): + __tablename__ = "normschachtschaden" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.normschachtschaden = normschachtschaden + + class kanalschaden(schaden): + __tablename__ = "kanalschaden" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.kanalschaden = kanalschaden + + class datentraeger(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "datentraeger" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.datentraeger = datentraeger + + class datei(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "datei" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisVsaKek.datei = datei diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_tww.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_tww.py new file mode 100644 index 0000000..b62102e --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_tww.py @@ -0,0 +1,12 @@ +from ...interlis import config +from .model_base import ModelBase + + +class ModelTwwVl(ModelBase): + def __init__(self): + super().__init__(config.TWW_VL_SCHEMA) + + +class ModelTwwSys(ModelBase): + def __init__(self): + super().__init__(config.TWW_SYS_SCHEMA) diff --git a/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_tww_od.py b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_tww_od.py new file mode 100644 index 0000000..87d3c8e --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/interlis_model_mapping/model_tww_od.py @@ -0,0 +1,330 @@ +from ...interlis import config +from .model_base import ModelBase + + +class ModelTwwOd(ModelBase): + def __init__(self): + super().__init__(config.TWW_OD_SCHEMA) + + class wastewater_structure(self.Base): + __tablename__ = "wastewater_structure" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.wastewater_structure = wastewater_structure + + class channel(wastewater_structure): + __tablename__ = "channel" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.channel = channel + + class manhole(wastewater_structure): + __tablename__ = "manhole" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.manhole = manhole + + class discharge_point(wastewater_structure): + __tablename__ = "discharge_point" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.discharge_point = discharge_point + + class special_structure(wastewater_structure): + __tablename__ = "special_structure" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.special_structure = special_structure + + class infiltration_installation(wastewater_structure): + __tablename__ = "infiltration_installation" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.infiltration_installation = infiltration_installation + + class wastewater_networkelement(self.Base): + __tablename__ = "wastewater_networkelement" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.wastewater_networkelement = wastewater_networkelement + + class reach_point(self.Base): + __tablename__ = "reach_point" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.reach_point = reach_point + + class reach_progression_alternative(self.Base): + __tablename__ = "reach_progression_alternative" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.reach_progression_alternative = reach_progression_alternative + + class wastewater_node(wastewater_networkelement): + __tablename__ = "wastewater_node" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.wastewater_node = wastewater_node + + class reach(wastewater_networkelement): + __tablename__ = "reach" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.reach = reach + + # class structure_part(wastewater_structure): + class structure_part(self.Base): + __tablename__ = "structure_part" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.structure_part = structure_part + + class dryweather_downspout(structure_part): + __tablename__ = "dryweather_downspout" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.dryweather_downspout = dryweather_downspout + + class access_aid(structure_part): + __tablename__ = "access_aid" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.access_aid = access_aid + + class dryweather_flume(structure_part): + __tablename__ = "dryweather_flume" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.dryweather_flume = dryweather_flume + + class cover(structure_part): + __tablename__ = "cover" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.cover = cover + + class benching(structure_part): + __tablename__ = "benching" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.benching = benching + + class wwtp_structure(wastewater_structure): + __tablename__ = "wwtp_structure" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.wwtp_structure = wwtp_structure + + # VSA_KEK + + class maintenance_event(self.Base): + __tablename__ = "maintenance_event" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.maintenance_event = maintenance_event + + class examination(maintenance_event): + __tablename__ = "examination" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.examination = examination + + class damage(self.Base): + __tablename__ = "damage" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.damage = damage + + class damage_manhole(damage): + __tablename__ = "damage_manhole" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.damage_manhole = damage_manhole + + class damage_channel(damage): + __tablename__ = "damage_channel" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.damage_channel = damage_channel + + class flushing_nozzle(structure_part): + __tablename__ = "flushing_nozzle" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.flushing_nozzle = flushing_nozzle + + class drainless_toilet(wastewater_structure): + __tablename__ = "drainless_toilet" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.drainless_toilet = drainless_toilet + + class tank_emptying(structure_part): + __tablename__ = "tank_emptying" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.tank_emptying = tank_emptying + + class tank_cleaning(structure_part): + __tablename__ = "tank_cleaning" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.tank_cleaning = tank_cleaning + + class bio_ecol_assessment(maintenance_event): + __tablename__ = "bio_ecol_assessment" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.bio_ecol_assessment = bio_ecol_assessment + + class maintenance(maintenance_event): + __tablename__ = "maintenance" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.maintenance = maintenance + + class connection_object(self.Base): + __tablename__ = "connection_object" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.connection_object = connection_object + + class fountain(connection_object): + __tablename__ = "fountain" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.fountain = fountain + + class reservoir(connection_object): + __tablename__ = "reservoir" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.reservoir = reservoir + + class building(connection_object): + __tablename__ = "building" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.building = building + + class individual_surface(connection_object): + __tablename__ = "individual_surface" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.individual_surface = individual_surface + + class catchment_area(self.Base): + __tablename__ = "catchment_area" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.catchment_area = catchment_area + + class surface_runoff_parameters(self.Base): + __tablename__ = "surface_runoff_parameters" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.surface_runoff_parameters = surface_runoff_parameters + + class param_ca_general(surface_runoff_parameters): + __tablename__ = "param_ca_general" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.param_ca_general = param_ca_general + + class param_ca_mouse1(surface_runoff_parameters): + __tablename__ = "param_ca_mouse1" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.param_ca_mouse1 = param_ca_mouse1 + + class electric_equipment(structure_part): + __tablename__ = "electric_equipment" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.electric_equipment = electric_equipment + + class electromechanical_equipment(structure_part): + __tablename__ = "electromechanical_equipment" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.electromechanical_equipment = electromechanical_equipment + + class zone(self.Base): + __tablename__ = "zone" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.zone = zone + + class drainage_system(zone): + __tablename__ = "drainage_system" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.drainage_system = drainage_system + + class infiltration_zone(zone): + __tablename__ = "infiltration_zone" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.infiltration_zone = infiltration_zone + + class solids_retention(structure_part): + __tablename__ = "solids_retention" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.solids_retention = solids_retention + + class overflow(self.Base): + __tablename__ = "overflow" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.overflow = overflow + + class pump(overflow): + __tablename__ = "pump" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.pump = pump + + class leapingweir(overflow): + __tablename__ = "leapingweir" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.leapingweir = leapingweir + + class prank_weir(overflow): + __tablename__ = "prank_weir" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.prank_weir = prank_weir + + class small_treatment_plant(wastewater_structure): + __tablename__ = "small_treatment_plant" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.small_treatment_plant = small_treatment_plant + + class backflow_prevention(structure_part): + __tablename__ = "backflow_prevention" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.backflow_prevention = backflow_prevention + + class file(self.Base): + __tablename__ = "file" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.file = file + + class re_maintenance_event_wastewater_structure(self.Base): + __tablename__ = "re_maintenance_event_wastewater_structure" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.re_maintenance_event_wastewater_structure = ( + re_maintenance_event_wastewater_structure + ) + + class re_building_group_disposal(self.Base): + __tablename__ = "re_building_group_disposal" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.re_building_group_disposal = re_building_group_disposal diff --git a/plugin/teksi_interlis_tool/interlis/processing_algs/__init__.py b/plugin/teksi_interlis_tool/interlis/processing_algs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/interlis/processing_algs/extractlabels_interlis.py b/plugin/teksi_interlis_tool/interlis/processing_algs/extractlabels_interlis.py new file mode 100644 index 0000000..45355ae --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/processing_algs/extractlabels_interlis.py @@ -0,0 +1,223 @@ +import json +import os +import tempfile +import uuid +from functools import partial + +from PyQt5.QtCore import QCoreApplication +from qgis import processing +from qgis.core import ( + QgsProcessingContext, + QgsProcessingFeedback, + QgsProcessingParameterBoolean, + QgsProcessingParameterEnum, + QgsProcessingParameterFileDestination, + QgsProcessingParameterVectorLayer, + QgsWkbTypes, +) + +from ...processing_provider.tww_algorithm import TwwAlgorithm +from ...utils.twwlayermanager import TwwLayerManager + + +class ExtractlabelsInterlisAlgorithm(TwwAlgorithm): + """This runs the native extractlabels algorithm for the given scales, and attaches obj_id and scale to the results. + + Otherwise, the output is difficult to use, because the FeatureID isn't stable (since it's the primary + key of the reach and structure views is not an integer)""" + + tr = partial(QCoreApplication.translate, "ExtractlabelsInterlisAlgorithm") + AVAILABLE_SCALE_PIPELINE_REGISTRY_1_1000 = "Leitungskataster" + AVAILABLE_SCALE_NETWORK_PLAN_1_500 = "Werkplan" + AVAILABLE_SCALE_OVERVIEWMAP_1_10000 = "Uebersichtsplan.UeP10" + AVAILABLE_SCALE_OVERVIEWMAP_1_5000 = "Uebersichtsplan.UeP5" + AVAILABLE_SCALE_OVERVIEWMAP_1_2000 = "Uebersichtsplan.UeP2" + AVAILABLE_SCALES = [ + # ili key, display name, scale value + ( + AVAILABLE_SCALE_PIPELINE_REGISTRY_1_1000, + tr("Leitungskataster"), + 1000, + ), # TODO: check scale ? + (AVAILABLE_SCALE_NETWORK_PLAN_1_500, tr("Werkplan"), 500), # TODO: check scale ? + (AVAILABLE_SCALE_OVERVIEWMAP_1_10000, tr("Uebersichtsplan 1:10000"), 10000), + (AVAILABLE_SCALE_OVERVIEWMAP_1_5000, tr("Uebersichtsplan 1:5000"), 5000), + (AVAILABLE_SCALE_OVERVIEWMAP_1_2000, tr("Uebersichtsplan 1:2000"), 2000), + ] + + OUTPUT = "OUTPUT" + INPUT_RESTRICT_TO_SELECTION = "RESTRICT_TO_SELECTION" + INPUT_SCALES = "SCALES" + INPUT_STRUCTURE_VIEW_LAYER = "STRUCTURE_VIEW_LAYER" + INPUT_REACH_VIEW_LAYER = "REACH_VIEW_LAYER" + + def name(self): + return "extractlabels_interlis" + + def displayName(self): + return self.tr("Extract labels for interlis") + + def initAlgorithm(self, config=None): + self.addParameter( + QgsProcessingParameterFileDestination( + self.OUTPUT, + description=self.tr("Output labels file"), + fileFilter="geojson (*.geojson)", + ) + ) + + self.addParameter( + QgsProcessingParameterBoolean( + self.INPUT_RESTRICT_TO_SELECTION, + description=self.tr("Restrict to selection"), + ) + ) + + self.addParameter( + QgsProcessingParameterEnum( + self.INPUT_SCALES, + description=self.tr("Scales to export"), + allowMultiple=True, + options=[f"{self.tr(i[1])} [1:{i[2]}]" for i in self.AVAILABLE_SCALES], + defaultValue=[i for i in range(len(self.AVAILABLE_SCALES))], + ) + ) + + self.addParameter( + QgsProcessingParameterVectorLayer( + self.INPUT_STRUCTURE_VIEW_LAYER, + description=self.tr("Structure view layer"), + types=[QgsWkbTypes.PointGeometry], + ) + ) + + self.addParameter( + QgsProcessingParameterVectorLayer( + self.INPUT_REACH_VIEW_LAYER, + description=self.tr("Reach view layer"), + types=[QgsWkbTypes.LineGeometry], + ) + ) + + def processAlgorithm( + self, parameters, context: QgsProcessingContext, feedback: QgsProcessingFeedback + ): + labels_file_path = self.parameterAsFileOutput(parameters, self.OUTPUT, context) + restrict_to_selection = self.parameterAsBoolean( + parameters, self.INPUT_RESTRICT_TO_SELECTION, context + ) + structure_view_layer = self.parameterAsVectorLayer( + parameters, self.INPUT_STRUCTURE_VIEW_LAYER, context + ) + reach_view_layer = self.parameterAsVectorLayer( + parameters, self.INPUT_REACH_VIEW_LAYER, context + ) + scales = [ + self.AVAILABLE_SCALES[i] + for i in self.parameterAsEnums(parameters, self.INPUT_SCALES, context) + ] + + # Clear the output file if it exists + if os.path.isfile(labels_file_path): + os.remove(labels_file_path) + + # Compute the extent + if restrict_to_selection: + extent = structure_view_layer.boundingBoxOfSelected() + extent.combineExtentWith(reach_view_layer.boundingBoxOfSelected()) + else: + extent = structure_view_layer.extent() + extent.combineExtentWith(reach_view_layer.extent()) + + # Store a mapping from FeatureID to obj_id (used below) + reach_feats = reach_view_layer.getFeatures() + structure_feats = structure_view_layer.getFeatures() + rowid_to_obj_id = { + "vw_tww_reach": {f.id(): f.attribute("obj_id") for f in reach_feats}, + "vw_tww_wastewater_structure": { + f.id(): f.attribute("obj_id") for f in structure_feats + }, + } + + annotated_paths = [] + + # Extract all labels at all scales + for scale_id, scale_display, scale_value in scales: + # Make an unique temporary name + unique = uuid.uuid4().hex + extract_path = os.path.join( + tempfile.gettempdir(), f"labels-{scale_id}_{unique}.geojson" + ) + + # Extract the labels + feedback.pushInfo(f"Extracting labels for scale {scale_display} [1:{scale_value}]") + processing.run( + "native:extractlabels", + { + "DPI": 96, # TODO: check what this changes + "EXTENT": extent, + "INCLUDE_UNPLACED": True, + "MAP_THEME": None, + "OUTPUT": extract_path, + "SCALE": scale_value, + }, + # this is a child algotihm + is_child_algorithm=True, + context=context, + feedback=feedback, + ) + + # Load the extracted labels + with open(extract_path) as extract_path_handle: + geojson = json.load(extract_path_handle) + + # Check that labels were generated + labels_count = len(geojson["features"]) + feedback.pushInfo(f"{labels_count} labels generated") + if labels_count == 0: + continue + + # Annotate features with tww_obj_id and scal + lyr_name_to_key = { + TwwLayerManager.layer( + "vw_tww_wastewater_structure" + ).name(): "vw_tww_wastewater_structure", + TwwLayerManager.layer("vw_tww_reach").name(): "vw_tww_reach", + } + for label in geojson["features"]: + layer_name = label["properties"]["Layer"] + # this is a non-TWW layer, we don't annotate it + if layer_name not in lyr_name_to_key: + continue + lyr = lyr_name_to_key[layer_name] + rowid = label["properties"]["FeatureID"] + label["properties"]["Layer"] = lyr + label["properties"]["tww_obj_id"] = rowid_to_obj_id[lyr][rowid] + label["properties"]["scale"] = scale_id + + # Save + annotated_path = extract_path + ".annotated.geojson" + with open(annotated_path, "w") as annotated_path_handle: + json.dump(geojson, annotated_path_handle) + + annotated_paths.append(annotated_path) + + # time.sleep(60) + + # Merge all scales to one geojson + feedback.pushInfo(f"Merging all labels ({annotated_paths}) to {labels_file_path}") + processing.run( + "native:mergevectorlayers", + { + "LAYERS": annotated_paths, + "OUTPUT": labels_file_path, + }, + # this is a child algotihm + is_child_algorithm=True, + context=context, + feedback=feedback, + ) + + feedback.setProgress(100) + + return {} diff --git a/plugin/teksi_interlis_tool/interlis/tpl/export.py.tpl b/plugin/teksi_interlis_tool/interlis/tpl/export.py.tpl new file mode 100644 index 0000000..a57935f --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/tpl/export.py.tpl @@ -0,0 +1,65 @@ +from sqlalchemy.orm import Session +from geoalchemy2.functions import ST_Transform, ST_Force2D + +from .. import utils + +from .model_{{model_name}} import get_{{model_name}}_model +from .model_{{ilimodel_name}} import get_{{ilimodel_name}}_model + + +def {{model_name}}_export(): + + {{model_name|upper}} = get_{{model_name}}_model() + {{ilimodel_name|upper}} = get_{{ilimodel_name}}_model() + + {{model_name}}_session = Session(utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False) + {{ilimodel_name}}_session = Session(utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False) + tid_maker = utils.ili2db.TidMaker(id_attribute='obj_id') + + def create_metaattributes(row, session): + metaattribute = {{ilimodel_name|upper}}.metaattribute( + # FIELDS TO MAP TO {{ilimodel_name|upper}}.metaattribute + # --- metaattribute --- + # datenherr=row.REPLACE_ME, + # datenlieferant=row.REPLACE_ME, + # letzte_aenderung=row.REPLACE_ME, + # sia405_baseclass_metaattribute=row.REPLACE_ME, + # t_id=row.REPLACE_ME + # t_seq=row.REPLACE_ME, + ) + session.add(metaattribute) + +{% for class_from, classes_to in mapping.items() %} + print("Exporting {{model_name|upper}}.{{class_from.__name__}} -> {{classes_to|qualclassesnames}}") + for row in {{model_name}}_session.query({{model_name|upper}}.{{class_from.__name__}}): + +{% for src_table, fields in class_from|classfields %} + # {{src_table}} --- {{fields|join(", ")}} +{% endfor %} + +{% for class_to in classes_to %} +{% if class_to.__name__ == 'metaattribute' %} + create_metaattributes(row, session) +{% else %} + {{class_to.__name__}} = {{ilimodel_name|upper}}.{{class_to.__name__}}( +{% for dst_table, fields in class_to|classfields %} +{% if dst_table != '_rel_' and dst_table != '_bwrel_' %} + + # --- {{dst_table}} --- +{% for field in fields %} + # {{field.name}}=row.REPLACE_ME, # {{field.property.columns[0].type}} +{% endfor %} +{% endif %} +{% endfor %} + ) + {{ilimodel_name}}_session.add({{class_to.__name__}}) +{% endif %} +{% endfor %} + print(".", end="") + print("done") + +{% endfor %} + {{ilimodel_name}}_session.commit() + + {{model_name}}_session.close() + {{ilimodel_name}}_session.close() diff --git a/plugin/teksi_interlis_tool/interlis/tpl/import_.py.tpl b/plugin/teksi_interlis_tool/interlis/tpl/import_.py.tpl new file mode 100644 index 0000000..5632870 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/tpl/import_.py.tpl @@ -0,0 +1,51 @@ +from sqlalchemy.orm import Session +from geoalchemy2.functions import ST_Transform, ST_Force2D + +from .. import utils + +from .model_{{model_name}} import get_{{model_name}}_model +from .model_{{ilimodel_name}} import get_{{ilimodel_name}}_model + + +def {{model_name}}_import(): + + {{model_name|upper}} = get_{{model_name}}_model() + {{ilimodel_name|upper}} = get_{{ilimodel_name}}_model() + + {{ilimodel_name}}_session = Session(utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False) + {{model_name}}_session = Session(utils.tww_sqlalchemy.create_engine(), autocommit=False, autoflush=False) + +{% for class_to, classes_from in mapping.items() %} + print("Importing {{classes_from|qualclassesnames}} -> {{model_name|upper}}.{{class_to.__name__}}") +{% if classes_from|length == 1 %} + for row in {{ilimodel_name}}_session.query({{classes_from|qualclassesnames}}): +{% else %} + for row, {{classes_from[1:]|classesnames}} in {{ilimodel_name}}_session.query({{classes_from|qualclassesnames}}){% if classes_from|length > 1 %}.join({{classes_from[1:]|qualclassesnames}}){% endif %}: +{% endif %} + +{% for class_from in classes_from %} +{% for src_table, fields in class_from|classfields %} + # {{src_table}} --- {{fields|join(", ")}} +{% endfor %} + +{% endfor %} + {{class_to.__name__}} = {{model_name|upper}}.{{class_to.__name__}}( +{% for dst_table, fields in class_to|classfields %} +{% if dst_table != '_rel_' and dst_table != '_bwrel_' %} + + # --- {{dst_table}} --- +{% for field in fields %} + # {{field.name}}=row.REPLACE_ME, # {{field.property.columns[0].type}} +{% endfor %} +{% endif %} +{% endfor %} + ) + {{model_name}}_session.add({{class_to.__name__}}) + print(".", end="") + print("done") + +{% endfor %} + {{model_name}}_session.commit() + + {{model_name}}_session.close() + {{ilimodel_name}}_session.close() diff --git a/plugin/teksi_interlis_tool/interlis/tpl/mapping.py.tpl b/plugin/teksi_interlis_tool/interlis/tpl/mapping.py.tpl new file mode 100644 index 0000000..485c958 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/tpl/mapping.py.tpl @@ -0,0 +1,19 @@ +from .{{model_name}} import Classes as {{model_name|upper}} +from .{{ilimodel_name}} import Classes as {{ilimodel_name|upper}} + +{{model_name|upper}}_TO_{{ilimodel_name|upper}} = { + # ALREADY MAPPED +{% for class_from, classes_to in mapping.items() %} + {{model_name|upper}}.{{class_from.__name__}}: [{{classes_to|qualclassesnames}}], +{% endfor %} + + # AVAILABLE TABLES + # {{ILIMODEL|sort(attribute='__name__')|qualclassesnames}} + + # NOT YET MAPPED +{% for class_from in MODEL|sort(attribute='__name__') %} +{% if class_from not in mapping.keys() %} + # {{model_name|upper}}.{{class_from.__name__}}: [{{ilimodel_name|upper}}.REPLACE_ME], +{% endif %} +{% endfor %} +} diff --git a/plugin/teksi_interlis_tool/interlis/utils/__init__.py b/plugin/teksi_interlis_tool/interlis/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/interlis/utils/ili2db.py b/plugin/teksi_interlis_tool/interlis/utils/ili2db.py new file mode 100644 index 0000000..570564d --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/utils/ili2db.py @@ -0,0 +1,196 @@ +import collections +import re +import xml.etree.ElementTree as ET +from types import SimpleNamespace + +from sqlalchemy.ext.automap import AutomapBase + +from ...libs.modelbaker.iliwrapper import globals, ili2dbutils +from .. import config +from .various import execute_subprocess, get_pgconf_as_ili_args, logger + + +class InterlisToolsException(Exception): + pass + + +class InterlisTools: + def __init__(self): + class BaseConfiguration: + java_path = None + + self.java_executable_path = ili2dbutils.get_java_path(BaseConfiguration()) + + stdout = SimpleNamespace() + stdout.emit = logger.info + stderr = SimpleNamespace() + stderr.emit = logger.error + + self.ili2pg_executable_path = ili2dbutils.get_ili2db_bin( + globals.DbIliMode.ili2pg, 4, stdout, stderr + ) + + def import_ili_schema( + self, schema, models, log_path, ext_columns_no_constraints=False, create_basket_col=False + ): + sql_ext_refs_cols = "" + if ext_columns_no_constraints: + sql_ext_refs_cols = "--sqlExtRefCols" + + create_basket_col_args = "" + if create_basket_col: + create_basket_col_args = "--createBasketCol" + + logger.info(f"ILIDB SCHEMAIMPORT INTO {schema}...") + execute_subprocess( + " ".join( + [ + f'"{self.java_executable_path}"', + "-jar", + f'"{self.ili2pg_executable_path}"', + "--schemaimport", + *get_pgconf_as_ili_args(), + "--dbschema", + f"{schema}", + "--setupPgExt", + "--createGeomIdx", + f"{sql_ext_refs_cols}", + "--createFk", + "--createFkIdx", + "--createTidCol", + "--importTid", + f"{create_basket_col_args}", + "--noSmartMapping", + "--defaultSrsCode", + "2056", + "--log", + f'"{log_path}"', + "--nameLang", + "de", + "--models", + f'"{";".join(models)}"', + ] + ) + ) + + def validate_xtf_data(self, xtf_file, log_path): + logger.info("VALIDATING XTF DATA...") + execute_subprocess( + f'"{self.java_executable_path}" -jar "{config.ILIVALIDATOR}" --log "{log_path}" "{xtf_file}"' + ) + + def import_xtf_data(self, schema, xtf_file, log_path): + logger.info("IMPORTING XTF DATA...") + execute_subprocess( + " ".join( + [ + f'"{self.java_executable_path}"', + "-jar", + f'"{self.ili2pg_executable_path}"', + "--import", + "--deleteData", + *get_pgconf_as_ili_args(), + "--dbschema", + f'"{schema}"', + "--disableValidation", + "--skipReferenceErrors", + "--createTidCol", + "--noSmartMapping", + "--defaultSrsCode", + "2056", + "--log", + f'"{log_path}"', + f'"{xtf_file}"', + ] + ) + ) + + def export_xtf_data(self, schema, xtf_file, log_path, model_name, export_model_name): + logger.info("EXPORT ILIDB...") + + # if optional export_model_name is set, add it to the args + if export_model_name: + export_model_name_args = ["--exportModels", export_model_name] + else: + export_model_name_args = [] + + execute_subprocess( + " ".join( + [ + f'"{self.java_executable_path}"', + "-jar", + f'"{self.ili2pg_executable_path}"', + "--export", + "--models", + f"{model_name}", + *export_model_name_args, + *get_pgconf_as_ili_args(), + "--dbschema", + f"{schema}", + "--disableValidation", + "--skipReferenceErrors", + "--createTidCol", + "--noSmartMapping", + "--defaultSrsCode", + "2056", + "--log", + f'"{log_path}"', + "--trace", + f'"{xtf_file}"', + ] + ) + ) + + @staticmethod + def get_xtf_models(xtf_file): + logger.info(f"GET XTF MODELS from {xtf_file}...") + + # from xml file + tree = ET.parse(xtf_file) + root = tree.getroot() + + def get_namespace(element): + m = re.match(r"\{.*\}", element.tag) + return m.group(0) if m else "" + + namespace = get_namespace(root) + + model_elements = root.findall("./{0}HEADERSECTION/{0}MODELS/{0}MODEL".format(namespace)) + + if not model_elements: + raise InterlisToolsException(f"Couldn't find any model into '{xtf_file}'") + + models = [] + for model_element in model_elements: + models.append(model_element.attrib.get("NAME", None)) + + return models + + +class TidMaker: + """ + Helper class that creates globally unique integer primary key forili2pg class (t_id) + from a a TWW id (obj_id or id). + """ + + def __init__(self, id_attribute="id"): + self._id_attr = id_attribute + self._autoincrementer = collections.defaultdict(lambda: len(self._autoincrementer)) + + def tid_for_row(self, row, for_class=None): + # tid are globally unique, while ids are only guaranteed unique per table, + # so include the base table in the key + # this finds the base class (the first parent class before sqlalchemy.ext.automap.Base) + class_for_id = row.__class__.__mro__[row.__class__.__mro__.index(AutomapBase) - 2] + key = (class_for_id, getattr(row, self._id_attr), for_class) + # was_created = key not in self._autoincrementer # just for debugging + tid = self._autoincrementer[key] + # if was_created: + # # just for debugging + # logger.info(f"created tid {tid} for {key}") + return tid + + def next_tid(self): + """Get an arbitrary unused tid""" + key = len(self._autoincrementer) + return self._autoincrementer[key] diff --git a/plugin/teksi_interlis_tool/interlis/utils/tww_sqlalchemy.py b/plugin/teksi_interlis_tool/interlis/utils/tww_sqlalchemy.py new file mode 100644 index 0000000..5ae54e3 --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/utils/tww_sqlalchemy.py @@ -0,0 +1,106 @@ +import logging + +import sqlalchemy +from sqlalchemy import inspect +from sqlalchemy.ext.automap import generate_relationship +from sqlalchemy.orm import ColumnProperty + +from ...utils.database_utils import DatabaseUtils + + +def create_engine(logger_name=None): + logging_args = {} + if logger_name: + handler = logging.FileHandler(f"tww_export.{logger_name}.log", mode="w") + handler.setLevel(logging.DEBUG) + logging.getLogger(f"sqlalchemy.engine.base.Engine.{logger_name}").addHandler(handler) + logging_args = {"logging_name": logger_name, "echo": True} + + pgconf = DatabaseUtils.get_pgconf() + + return sqlalchemy.create_engine( + f"postgresql://{pgconf['user']}:{pgconf['password']}@{pgconf['host']}:{pgconf['port']}/{pgconf['dbname']}", + **logging_args, + ) + + +def custom_name_for_collection_relationship(base, local_cls, referred_cls, constraint): + # This customizes the name for backwards relation (uses the class name and it's fk column name), avoiding clashes for inherited classes. + # See https://stackoverflow.com/a/48288656/13690651 + return f"{referred_cls.__name__}__BWREL_{constraint.columns.keys()[0]}" + + +def custom_name_for_scalar_relationship(base, local_cls, referred_cls, constraint): + # This customizes the name for backwards relation (uses the fk column name), avoiding clashes for inherited classes. + # See https://stackoverflow.com/a/48288656/13690651 + return f"{constraint.columns.keys()[0]}__REL" + + +def custom_generate_relationship( + base, direction, return_fn, attrname, local_cls, referred_cls, **kw +): + """ + Skips creating backwards relations to avoid adding instances twice with session.merge + """ + # disabling type checks on all relations, allowing to flush subclasses instead of abstract classes in relations + # without requiring to configure polymorphism + kw["enable_typechecks"] = False + + # accept circular-dependencies (e.g. organisation.dataowner can be itself) + # see https://docs.sqlalchemy.org/en/20/orm/relationship_persistence.html#rows-that-point-to-themselves-mutually-dependent-rows) + if attrname in ["fk_dataowner__REL", "fk_provider__REL"]: + kw["post_update"] = True + + return generate_relationship( + base, direction, return_fn, attrname, local_cls, referred_cls, **kw + ) + + +def prepare_automap_base(base, schema): + """ + Prepares the automap base by reflecting all the fields with some specific configuration for relationship and population Base.classes with manually defined classes (which for some reason isn't done by default) + """ + + # DOESN'T WORK, BUT CACHING WOULD BE GOOD + # pickle_file = f'{__file__}.pickled' + # reflect = True + # if os.path.exists(pickle_file): + # with open(pickle_file, 'rb') as f: + # reflect = False + # base.metadata = pickle.load(f) + + base.prepare( + create_engine(), + reflect=True, + schema=schema, + name_for_collection_relationship=custom_name_for_collection_relationship, + name_for_scalar_relationship=custom_name_for_scalar_relationship, + generate_relationship=custom_generate_relationship, + ) + + # For some reason, automap_base doesn't add manually defined classes to Base.classes, + # so we do it manually here + def add_subclasses(Parent): + for subclass in Parent.__subclasses__(): + if subclass.__name__ not in base.classes: + base.classes[subclass.__name__] = subclass + add_subclasses(subclass) + + add_subclasses(base) + + # DOESN'T WORK, BUT CACHING WOULD BE GOOD + # with open(pickle_file, 'wb') as f: + # pickle.dump(base.metadata, f) + + +def copy_instance(instance): + """ + Creates a copy of an SQLAchely ORM instance. Dont forget to change (or nullify) the primary key. + """ + klass = instance.__class__ + mapper = inspect(klass) + new_instance = klass() + for attr in mapper.attrs: + if isinstance(attr, ColumnProperty): + setattr(new_instance, attr.key, getattr(instance, attr.key)) + return new_instance diff --git a/plugin/teksi_interlis_tool/interlis/utils/various.py b/plugin/teksi_interlis_tool/interlis/utils/various.py new file mode 100644 index 0000000..e00ec5b --- /dev/null +++ b/plugin/teksi_interlis_tool/interlis/utils/various.py @@ -0,0 +1,75 @@ +import datetime +import os +import re +import subprocess +import tempfile +from typing import List + +from ...utils.database_utils import DatabaseUtils +from ...utils.plugin_utils import logger + + +class CmdException(BaseException): + pass + + +def execute_subprocess(command, check=True, output_content=False): + command_masked_pwd = re.sub(r"(--dbpwd)\s\"[\w\.*#?!@$%^&-]+\"", r'\1 "[PASSWORD]"', command) + logger.info(f"EXECUTING: {command_masked_pwd}") + try: + proc = subprocess.run( + command, + check=True, + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + except subprocess.CalledProcessError as e: + if check: + logger.exception(e.output.decode("windows-1252" if os.name == "nt" else "utf-8")) + raise CmdException("Command errored ! See logs for more info.") + return e.output if output_content else e.returncode + return proc.stdout.decode().strip() if output_content else proc.returncode + + +def get_pgconf_as_ili_args() -> List[str]: + """Returns the pgconf as a list of ili2db arguments""" + pgconf = DatabaseUtils.get_pgconf() + args = [] + if pgconf["host"]: + args.extend(["--dbhost", '"' + pgconf["host"] + '"']) + if pgconf["port"]: + args.extend(["--dbport", '"' + pgconf["port"] + '"']) + if pgconf["user"]: + args.extend(["--dbusr", '"' + pgconf["user"] + '"']) + if pgconf["password"]: + args.extend(["--dbpwd", '"' + pgconf["password"] + '"']) + if pgconf["dbname"]: + args.extend(["--dbdatabase", '"' + pgconf["dbname"] + '"']) + return args + + +def make_log_path(next_to_path, step_name): + """Returns a path for logging purposes. If next_to_path is None, it will be saved in the temp directory""" + now = f"{datetime.datetime.now():%y%m%d%H%M%S}" + if next_to_path: + return f"{next_to_path}.{now}.{step_name}.log" + else: + temp_path = os.path.join(tempfile.gettempdir(), "tww2ili") + os.makedirs(temp_path, exist_ok=True) + return os.path.join(temp_path, f"{now}.{step_name}.log") + + +class LoggingHandlerContext: + """Temporarily sets a log handler, then removes it""" + + def __init__(self, handler): + self.handler = handler + + def __enter__(self): + logger.addHandler(self.handler) + + def __exit__(self, et, ev, tb): + logger.removeHandler(self.handler) + self.handler.close() + # implicit return of None => don't swallow exceptions diff --git a/plugin/teksi_interlis_tool/metadata.txt b/plugin/teksi_interlis_tool/metadata.txt new file mode 100644 index 0000000..0725719 --- /dev/null +++ b/plugin/teksi_interlis_tool/metadata.txt @@ -0,0 +1,25 @@ + +[general] +name=TEKSI INTERLIS Tool +description=TEKSI plugin to manage NTERLIS Import and Export +Provides selection of import / export model and choice to also export labels and their orientation. Requires a compatible TEKSI datamodel and project file. Supports Swiss standards SIA405 wastewater, VSA-DSS and VSA-KEK (2020.x) for INTERLIS import / export. + +qgisMinimumVersion=3.34.8 +category=Vector +version=2024.0.0 + +tags=teksi, gep, pgee, abwasser, wastewater, assainissement, network, sewer, infrastructure, management + +author=TEKSI open source contributors +email=info@teksi.ch +homepage=https://www.teksi.ch/modules/abwasser-gep/ +tracker=https://github.com/teksi/tit/issues +repository=https://github.com/teksi/tit +changelog=https://github.com/teksi/tit/releases + +icon=icons/teksi-abwasser-logo.svg + +plugin_dependencies=Linking Relation Editor,Document Management System + +experimental=True +deprecated=False diff --git a/plugin/teksi_interlis_tool/processing_provider/__init__.py b/plugin/teksi_interlis_tool/processing_provider/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/processing_provider/provider.py b/plugin/teksi_interlis_tool/processing_provider/provider.py new file mode 100644 index 0000000..3258709 --- /dev/null +++ b/plugin/teksi_interlis_tool/processing_provider/provider.py @@ -0,0 +1,150 @@ +""" +/*************************************************************************** + TWW processing provider + ------------------- + begin : 18.11.2017 + copyright : (C) 2017 by OPENGIS.ch + email : matthias@opengis.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +""" + +import logging +import os + +from processing.core.ProcessingConfig import ProcessingConfig, Setting +from PyQt5.QtGui import QIcon +from qgis.core import Qgis, QgsProcessingProvider +from qgis.utils import iface + +from .change_reach_direction import ChangeReachDirection +from .flow_times import FlowTimesAlgorithm +from .snap_reach import SnapReachAlgorithm +from .sum_up_upstream import SumUpUpstreamAlgorithm +from .swmm_create_input import SwmmCreateInputAlgorithm +from .swmm_execute import SwmmExecuteAlgorithm +from .swmm_extract_results import SwmmExtractResultsAlgorithm +from .swmm_import_results import SwmmImportResultsAlgorithm +from .swmm_set_friction import SwmmSetFrictionAlgorithm + +__author__ = "Matthias Kuhn" +__date__ = "2017-11-18" +__copyright__ = "(C) 2017 by OPENGIS.ch" + +# This will get replaced with a git SHA1 when you do a git archive + +__revision__ = "$Format:%H$" + +logger = logging.getLogger(__package__) + + +class TwwProcessingProvider(QgsProcessingProvider): + def __init__(self): + QgsProcessingProvider.__init__(self) + # AlgorithmProvider.__init__(self) + + self.activate = True + + # Load algorithms + self.alglist = [ + SnapReachAlgorithm(), + FlowTimesAlgorithm(), + ChangeReachDirection(), + SumUpUpstreamAlgorithm(), + SwmmCreateInputAlgorithm(), + SwmmExtractResultsAlgorithm(), + SwmmImportResultsAlgorithm(), + SwmmExecuteAlgorithm(), + SwmmSetFrictionAlgorithm(), + ] + try: + from ..interlis.processing_algs.extractlabels_interlis import ( + ExtractlabelsInterlisAlgorithm, + ) + + self.alglist.append(ExtractlabelsInterlisAlgorithm()) + except ImportError: + pass + + for alg in self.alglist: + alg.provider = self + + def getAlgs(self): + algs = [ + SnapReachAlgorithm(), + FlowTimesAlgorithm(), + SumUpUpstreamAlgorithm(), + ChangeReachDirection(), + SwmmCreateInputAlgorithm(), + SwmmExtractResultsAlgorithm(), + SwmmImportResultsAlgorithm(), + SwmmExecuteAlgorithm(), + SwmmSetFrictionAlgorithm(), + ] + try: + from ..interlis.processing_algs.extractlabels_interlis import ( + ExtractlabelsInterlisAlgorithm, + ) + + algs.append(ExtractlabelsInterlisAlgorithm()) + + except ImportError as e: + iface.messageBar().pushMessage( + "Error", + "Could not load tww2ili due to unmet dependencies. See logs for more details.", + level=Qgis.Critical, + ) + logger.error(str(e)) + return algs + + def id(self): + return "tww" + + def name(self): + """This is the name that will appear on the toolbox group. + + It is also used to create the command line name of all the + algorithms from this provider. + """ + return "TWW" + + def icon(self): + return QIcon(self.svgIconPath()) + + def svgIconPath(self): + basepath = os.path.dirname(os.path.abspath(__file__)) + return os.path.join(basepath, "..", "icons", "twwIcon.svg") + + def loadAlgorithms(self): + self.algs = self.getAlgs() + for a in self.algs: + self.addAlgorithm(a) + + def load(self): + ProcessingConfig.settingIcons[self.name()] = self.icon() + ProcessingConfig.addSetting( + Setting( + self.name(), + "SWMM_PATH", + self.tr( + r"SWMM executable (e.g. C:\Program Files (x86)\EPA SWMM 5.1.013\swmm55.exe)" + ), + None, + valuetype=Setting.FILE, + ) + ) + + ProcessingConfig.readSettings() + self.refreshAlgorithms() + return True + + def unload(self): + ProcessingConfig.removeSetting("SWMM_PATH") diff --git a/plugin/teksi_interlis_tool/processing_provider/tww_algorithm.py b/plugin/teksi_interlis_tool/processing_provider/tww_algorithm.py new file mode 100644 index 0000000..4f1a568 --- /dev/null +++ b/plugin/teksi_interlis_tool/processing_provider/tww_algorithm.py @@ -0,0 +1,49 @@ +""" +/*************************************************************************** + TWW processing provider + ------------------- + begin : 15.08.2018 + copyright : (C) 2018 by OPENGIS.ch + email : matthias@opengis.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +""" + +from PyQt5.QtCore import QCoreApplication +from qgis.core import QgsProcessingAlgorithm + +__author__ = "Matthias Kuhn" +__date__ = "2018-08-15" +__copyright__ = "(C) 2018 by OPENGIS.ch" + +# This will get replaced with a git SHA1 when you do a git archive + +__revision__ = "$Format:%H$" + + +class TwwAlgorithm(QgsProcessingAlgorithm): + """ + Boilerplate code for TWW algorithms + """ + + def group(self): + return "TWW" + + def groupId(self): + return "tww" + + def tr(self, string, context=""): + if context == "": + context = self.__class__.__name__ + return QCoreApplication.translate(context, string) + + def createInstance(self): + return type(self)() diff --git a/plugin/teksi_interlis_tool/teksi_interlis_tool_plugin.py b/plugin/teksi_interlis_tool/teksi_interlis_tool_plugin.py new file mode 100644 index 0000000..8945893 --- /dev/null +++ b/plugin/teksi_interlis_tool/teksi_interlis_tool_plugin.py @@ -0,0 +1,669 @@ +# ----------------------------------------------------------- +# +# TEKSI Wastewater +# +# Copyright (C) 2012 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this progsram; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + + +import logging +import os + +from qgis.core import Qgis, QgsApplication +from qgis.PyQt.QtCore import QLocale, QSettings, Qt +from qgis.PyQt.QtGui import QIcon +from qgis.PyQt.QtWidgets import QAction, QApplication, QMessageBox, QToolBar +from qgis.utils import qgsfunction + +try: + from .gui.twwplotsvgwidget import TwwPlotSVGWidget +except ImportError: + TwwPlotSVGWidget = None +from .gui.twwprofiledockwidget import TwwProfileDockWidget +from .gui.twwsettingsdialog import TwwSettingsDialog +from .gui.twwwizard import TwwWizard +from .processing_provider.provider import TwwProcessingProvider +from .tools.twwmaptools import TwwMapToolConnectNetworkElements, TwwTreeMapTool +from .tools.twwnetwork import TwwGraphManager +from .utils.database_utils import DatabaseUtils +from .utils.plugin_utils import plugin_root_path +from .utils.qt_utils import OverrideCursor +from .utils.translation import setup_i18n +from .utils.twwlayermanager import TwwLayerManager, TwwLayerNotifier +from .utils.twwlogging import TwwQgsLogHandler + +LOGFORMAT = "%(asctime)s:%(levelname)s:%(module)s:%(message)s" + + +@qgsfunction(0, "System") +def locale(values, feature, parent): + return QSettings().value("locale/userLocale", QLocale.system().name()) + + +class TeksiInterlisToolPlugin: + """ + A plugin for wastewater management + https://github.com/teksi/wastewater + """ + + # The networkAnalyzer will manage the networklayers and pathfinding + network_analyzer = None + + # Remember not to reopen the dock if there's already one opened + profile_dock = None + + # Wizard + wizarddock = None + + # The layer ids the plugin will need + edgeLayer = None + nodeLayer = None + specialStructureLayer = None + networkElementLayer = None + + profile = None + + def __init__(self, iface): + self.iface = iface + self.canvas = iface.mapCanvas() + self.nodes = None + self.edges = None + + self.interlisImporterExporter = None + + self.initLogger() + setup_i18n() + + def tr(self, source_text): + """ + This does not inherit from QObject but for the translation to work (in particular to have translatable strings + picked up) we need a tr method. + :rtype : unicode + :param source_text: The text to translate + :return: The translated text + """ + return QApplication.translate("TwwPlugin", source_text) + + def initLogger(self): + """ + Initializes the logger + """ + self.logger = logging.getLogger(__package__) + + settings = QSettings() + + loglevel = settings.value("/TWW/LogLevel", "Warning") + logfile = settings.value("/TWW/LogFile", None) + + if hasattr(self.logger, "twwFileHandler"): + self.logger.removeHandler(self.logger.twwFileHandler) + del self.logger.twwFileHandler + + current_handlers = [h.__class__.__name__ for h in self.logger.handlers] + if self.__class__.__name__ not in current_handlers: + self.logger.addHandler(TwwQgsLogHandler()) + + if logfile: + log_handler = logging.FileHandler(logfile) + fmt = logging.Formatter(LOGFORMAT) + log_handler.setFormatter(fmt) + self.logger.addHandler(log_handler) + self.logger.fileHandler = log_handler + + if "Debug" == loglevel: + self.logger.setLevel(logging.DEBUG) + elif "Info" == loglevel: + self.logger.setLevel(logging.INFO) + elif "Warning" == loglevel: + self.logger.setLevel(logging.WARNING) + elif "Error" == loglevel: + self.logger.setLevel(logging.ERROR) + + fp = os.path.join(os.path.abspath(os.path.dirname(__file__)), "metadata.txt") + + ini_text = QSettings(fp, QSettings.IniFormat) + verno = ini_text.value("version") + + self.logger.info("TEKSI Wastewater plugin version " + verno + " started") + + def initGui(self): + """ + Called to setup the plugin GUI + """ + self.network_layer_notifier = TwwLayerNotifier( + self.iface.mainWindow(), ["vw_network_node", "vw_network_segment"] + ) + self.wastewater_networkelement_layer_notifier = TwwLayerNotifier( + self.iface.mainWindow(), ["vw_wastewater_node", "vw_tww_reach"] + ) + self.toolbarButtons = [] + + # Create toolbar button + # self.profileAction = QAction( + # QIcon(os.path.join(plugin_root_path(), "icons/wastewater-profile.svg")), + # self.tr("Profile"), + # self.iface.mainWindow(), + # ) + # self.profileAction.setWhatsThis(self.tr("Reach trace")) + # self.profileAction.setEnabled(False) + # self.profileAction.setCheckable(True) + # self.profileAction.triggered.connect(self.profileToolClicked) + + self.downstreamAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/wastewater-downstream.svg")), + self.tr("Downstream"), + self.iface.mainWindow(), + ) + self.downstreamAction.setWhatsThis(self.tr("Downstream reaches")) + self.downstreamAction.setEnabled(False) + self.downstreamAction.setCheckable(True) + self.downstreamAction.triggered.connect(self.downstreamToolClicked) + + self.upstreamAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/wastewater-upstream.svg")), + self.tr("Upstream"), + self.iface.mainWindow(), + ) + self.upstreamAction.setWhatsThis(self.tr("Upstream reaches")) + self.upstreamAction.setEnabled(False) + self.upstreamAction.setCheckable(True) + self.upstreamAction.triggered.connect(self.upstreamToolClicked) + + self.wizardAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/wizard.svg")), + "Wizard", + self.iface.mainWindow(), + ) + self.wizardAction.setWhatsThis(self.tr("Create new manholes and reaches")) + self.wizardAction.setEnabled(False) + self.wizardAction.setCheckable(True) + self.wizardAction.triggered.connect(self.wizard) + + self.connectNetworkElementsAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/link-wastewater-networkelement.svg")), + QApplication.translate("teksi_interlis_tool", "Connect wastewater networkelements"), + self.iface.mainWindow(), + ) + self.connectNetworkElementsAction.setEnabled(False) + self.connectNetworkElementsAction.setCheckable(True) + self.connectNetworkElementsAction.triggered.connect(self.connectNetworkElements) + + self.refreshNetworkTopologyAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/refresh-network.svg")), + "Refresh network topology", + self.iface.mainWindow(), + ) + self.refreshNetworkTopologyAction.setWhatsThis(self.tr("Refresh network topology")) + self.refreshNetworkTopologyAction.setEnabled(False) + self.refreshNetworkTopologyAction.setCheckable(False) + self.refreshNetworkTopologyAction.triggered.connect( + self.refreshNetworkTopologyActionClicked + ) + + self.updateSymbologyAction = QAction(self.tr("Update symbology"), self.iface.mainWindow()) + self.updateSymbologyAction.triggered.connect(self.updateSymbology) + + self.validityCheckAction = QAction(self.tr("Validity check"), self.iface.mainWindow()) + self.validityCheckAction.triggered.connect(self.tww_validity_check_action) + + self.enableSymbologyTriggersAction = QAction( + self.tr("Enable symbology triggers"), self.iface.mainWindow() + ) + self.enableSymbologyTriggersAction.triggered.connect(self.enable_symbology_triggers) + + self.disableSymbologyTriggersAction = QAction( + self.tr("Disable symbology triggers"), self.iface.mainWindow() + ) + self.disableSymbologyTriggersAction.triggered.connect(self.disable_symbology_triggers) + + self.settingsAction = QAction( + QIcon(QgsApplication.getThemeIcon("/mActionOptions.svg")), + self.tr("Settings"), + self.iface.mainWindow(), + ) + self.settingsAction.triggered.connect(self.showSettings) + + self.aboutAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/teksi-abwasser-logo.svg")), + self.tr("About"), + self.iface.mainWindow(), + ) + self.aboutAction.triggered.connect(self.about) + + self.importAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/interlis_import.svg")), + self.tr("Import from interlis"), + self.iface.mainWindow(), + ) + self.importAction.setWhatsThis(self.tr("Import from INTERLIS")) + self.importAction.setEnabled(False) + self.importAction.setCheckable(False) + self.importAction.triggered.connect(self.actionImportClicked) + + self.exportAction = QAction( + QIcon(os.path.join(plugin_root_path(), "icons/interlis_export.svg")), + self.tr("Export to interlis"), + self.iface.mainWindow(), + ) + self.exportAction.setWhatsThis(self.tr("Export to INTERLIS")) + self.exportAction.setEnabled(False) + self.exportAction.setCheckable(False) + self.exportAction.triggered.connect(self.actionExportClicked) + + # Add toolbar button and menu item + self.toolbar = QToolBar(self.tr("TEKSI Wastewater")) + self.toolbar.setObjectName(self.toolbar.windowTitle()) + # self.toolbar.addAction(self.profileAction) + self.toolbar.addAction(self.upstreamAction) + self.toolbar.addAction(self.downstreamAction) + self.toolbar.addAction(self.wizardAction) + self.toolbar.addAction(self.refreshNetworkTopologyAction) + self.toolbar.addAction(self.connectNetworkElementsAction) + + self.main_menu_name = "TEKSI &Wastewater" + # self.iface.addPluginToMenu(self.menu, self.profileAction) + self.iface.addPluginToMenu(self.main_menu_name, self.updateSymbologyAction) + self.iface.addPluginToMenu(self.main_menu_name, self.validityCheckAction) + self.iface.addPluginToMenu(self.main_menu_name, self.enableSymbologyTriggersAction) + self.iface.addPluginToMenu(self.main_menu_name, self.disableSymbologyTriggersAction) + self.iface.addPluginToMenu(self.main_menu_name, self.settingsAction) + self.iface.addPluginToMenu(self.main_menu_name, self.aboutAction) + + self._get_main_menu_action().setIcon( + QIcon(os.path.join(plugin_root_path(), "icons/teksi-abwasser-logo.svg")), + ) + + self.update_admin_mode() + + self.iface.addToolBar(self.toolbar) + + # Local array of buttons to enable / disable based on context + # self.toolbarButtons.append(self.profileAction) + self.toolbarButtons.append(self.upstreamAction) + self.toolbarButtons.append(self.downstreamAction) + self.toolbarButtons.append(self.wizardAction) + self.toolbarButtons.append(self.refreshNetworkTopologyAction) + self.toolbarButtons.append(self.importAction) + self.toolbarButtons.append(self.exportAction) + + self.network_layer_notifier.layersAvailable.connect(self.onLayersAvailable) + self.network_layer_notifier.layersUnavailable.connect(self.onLayersUnavailable) + + # Init the object maintaining the network + self.network_analyzer = TwwGraphManager() + self.network_analyzer.message_emitted.connect(self.iface.messageBar().pushMessage) + # Create the map tool for profile selection + # self.profile_tool = TwwProfileMapTool( + # self.iface, self.profileAction, self.network_analyzer + # ) + # self.profile_tool.profileChanged.connect(self.onProfileChanged) + + self.upstream_tree_tool = TwwTreeMapTool( + self.iface, self.upstreamAction, self.network_analyzer + ) + self.upstream_tree_tool.setDirection("upstream") + self.upstream_tree_tool.treeChanged.connect(self.onTreeChanged) + self.downstream_tree_tool = TwwTreeMapTool( + self.iface, self.downstreamAction, self.network_analyzer + ) + self.downstream_tree_tool.setDirection("downstream") + self.downstream_tree_tool.treeChanged.connect(self.onTreeChanged) + + self.maptool_connect_networkelements = TwwMapToolConnectNetworkElements( + self.iface, self.connectNetworkElementsAction + ) + + self.wastewater_networkelement_layer_notifier.layersAvailableChanged.connect( + self._wastewater_networkelement_layer_available_changed + ) + + self.processing_provider = TwwProcessingProvider() + QgsApplication.processingRegistry().addProvider(self.processing_provider) + + self.network_layer_notifier.layersAdded([]) + + def tww_validity_check_startup(self): + messages = [] + try: + messages = DatabaseUtils.get_validity_check_issues() + + except Exception as exception: + messages.append(self.tr(f"Could not check database validity: {exception}")) + + for message in messages: + self.iface.messageBar().pushMessage( + "Error", + message, + level=Qgis.Critical, + ) + + def tww_validity_check_action(self): + messages = [] + try: + messages = DatabaseUtils.get_validity_check_issues() + + except Exception as exception: + messages.append(self.tr(f"Could not check database validity: {exception}")) + + if len(messages) == 0: + QMessageBox.information( + self.iface.mainWindow(), + self.validityCheckAction.text(), + self.tr("There are no database validity issues."), + ) + return + + messagesText = "\n".join(messages) + QMessageBox.critical( + self.iface.mainWindow(), + self.validityCheckAction.text(), + self.tr(f"Database has following validity issues:\n\n{messagesText}"), + ) + + def enable_symbology_triggers(self): + try: + DatabaseUtils.enable_symbology_triggers() + QMessageBox.information( + self.iface.mainWindow(), + self.enableSymbologyTriggersAction.text(), + self.tr("Symbology triggers have been successfully enabled"), + ) + + except Exception as exception: + QMessageBox.critical( + self.iface.mainWindow(), + self.enableSymbologyTriggersAction.text(), + self.tr(f"Symbology triggers cannot be enabled:\n\n{exception}"), + ) + + def disable_symbology_triggers(self): + try: + DatabaseUtils.disable_symbology_triggers() + QMessageBox.information( + self.iface.mainWindow(), + self.disableSymbologyTriggersAction.text(), + self.tr("Symbology triggers have been successfully disabled"), + ) + + except Exception as exception: + QMessageBox.critical( + self.iface.mainWindow(), + self.disableSymbologyTriggersAction.text(), + self.tr(f"Symbology triggers cannot be disabled:\n\n{exception}"), + ) + + def unload(self): + """ + Called when unloading + """ + # self.toolbar.removeAction(self.profileAction) + self.toolbar.removeAction(self.upstreamAction) + self.toolbar.removeAction(self.downstreamAction) + self.toolbar.removeAction(self.wizardAction) + self.toolbar.removeAction(self.refreshNetworkTopologyAction) + self.toolbar.removeAction(self.connectNetworkElementsAction) + + if self.importAction in self.toolbar.actions(): + self.toolbar.removeAction(self.importAction) + if self.exportAction in self.toolbar.actions(): + self.toolbar.removeAction(self.exportAction) + + self.toolbar.deleteLater() + + # self.iface.removePluginMenu(self.menu, self.profileAction) + self.iface.removePluginMenu(self.main_menu_name, self.updateSymbologyAction) + self.iface.removePluginMenu(self.main_menu_name, self.validityCheckAction) + self.iface.removePluginMenu(self.main_menu_name, self.settingsAction) + self.iface.removePluginMenu(self.main_menu_name, self.aboutAction) + self.iface.removePluginMenu(self.main_menu_name, self.enableSymbologyTriggersAction) + self.iface.removePluginMenu(self.main_menu_name, self.disableSymbologyTriggersAction) + + QgsApplication.processingRegistry().removeProvider(self.processing_provider) + + def onLayersAvailable(self, layers): + for b in self.toolbarButtons: + b.setEnabled(True) + + self.network_analyzer.setReachLayer(layers["vw_network_segment"]) + self.network_analyzer.setNodeLayer(layers["vw_network_node"]) + + def onLayersUnavailable(self): + for b in self.toolbarButtons: + b.setEnabled(False) + + def profileToolClicked(self): + """ + Is executed when the profile button is clicked + """ + self.openDock() + # Set the profile map tool + # self.profile_tool.setActive() + + def upstreamToolClicked(self): + """ + Is executed when the user clicks the upstream search tool + """ + self.openDock() + self.upstream_tree_tool.setActive() + + def downstreamToolClicked(self): + """ + Is executed when the user clicks the downstream search tool + """ + self.openDock() + self.downstream_tree_tool.setActive() + + def refreshNetworkTopologyActionClicked(self): + """ + Is executed when the user clicks the refreshNetworkTopologyAction tool + """ + self.network_analyzer.refresh() + + def wizard(self): + """""" + if not self.wizarddock: + self.wizarddock = TwwWizard(self.iface.mainWindow(), self.iface) + self.logger.debug("Opening Wizard") + self.iface.addDockWidget(Qt.LeftDockWidgetArea, self.wizarddock) + self.wizarddock.show() + + def connectNetworkElements(self, checked): + self.iface.mapCanvas().setMapTool(self.maptool_connect_networkelements) + + def openDock(self): + """ + Opens the dock + """ + if self.profile_dock is None: + self.logger.debug("Open dock") + self.profile_dock = TwwProfileDockWidget( + self.iface.mainWindow(), + self.iface.mapCanvas(), + self.iface.addDockWidget, + ) + self.profile_dock.closed.connect(self.onDockClosed) + self.profile_dock.showIt() + + self.plotWidget = None + if TwwPlotSVGWidget is not None: + self.plotWidget = TwwPlotSVGWidget(self.profile_dock, self.network_analyzer) + self.plotWidget.specialStructureMouseOver.connect(self.highlightProfileElement) + self.plotWidget.specialStructureMouseOut.connect(self.unhighlightProfileElement) + self.plotWidget.reachMouseOver.connect(self.highlightProfileElement) + self.plotWidget.reachMouseOut.connect(self.unhighlightProfileElement) + self.profile_dock.addPlotWidget(self.plotWidget) + self.profile_dock.setTree(self.nodes, self.edges) + + def onDockClosed(self): # used when Dock dialog is closed + """ + Gets called when the dock is closed + All the cleanup of the dock has to be done here + """ + self.profile_dock = None + + def onProfileChanged(self, profile): + """ + The profile changed: update the plot + @param profile: The profile to plot + """ + self.profile = profile.copy() + + if self.plotWidget: + self.plotWidget.setProfile(profile) + + def onTreeChanged(self, nodes, edges): + if self.profile_dock: + self.profile_dock.setTree(nodes, edges) + self.nodes = nodes + self.edges = edges + + def highlightProfileElement(self, obj_id): + if self.profile is not None: + self.profile.highlight(str(obj_id)) + + def unhighlightProfileElement(self): + if self.profile is not None: + self.profile.highlight(None) + + def updateSymbology(self): + try: + with OverrideCursor(Qt.WaitCursor): + DatabaseUtils.update_symbology() + QMessageBox.information( + self.iface.mainWindow(), + self.updateSymbologyAction.text(), + self.tr("Symbology has been successfully updated"), + ) + + except Exception as exception: + QMessageBox.critical( + self.iface.mainWindow(), + self.updateSymbologyAction.text(), + self.tr(f"Symbology update failed:\n\n{exception}"), + ) + + def showSettings(self): + settings_dlg = TwwSettingsDialog(self.iface.mainWindow()) + settings_dlg.exec_() + + self.update_admin_mode() + + def about(self): + from .gui.about_dialog import AboutDialog + + AboutDialog(self.iface.mainWindow()).exec_() + + def actionExportClicked(self): + if self.interlisImporterExporter is None: + try: + # We only import now to avoid useless exception if dependencies aren't met + from .interlis.gui.interlis_importer_exporter_gui import ( + InterlisImporterExporterGui, + ) + + self.interlisImporterExporter = InterlisImporterExporterGui() + except ImportError as e: + self.iface.messageBar().pushMessage( + "Error", + "Could not load Interlis exporter due to unmet dependencies. See logs for more details.", + level=Qgis.Critical, + ) + self.logger.error(str(e)) + return + + self.interlisImporterExporter.action_export() + + def actionImportClicked(self): + if self.interlisImporterExporter is None: + try: + # We only import now to avoid useless exception if dependencies aren't met + from .interlis.gui.interlis_importer_exporter_gui import ( + InterlisImporterExporterGui, + ) + + self.interlisImporterExporter = InterlisImporterExporterGui() + except ImportError as e: + self.iface.messageBar().pushMessage( + "Error", + "Could not load Interlis importer due to unmet dependencies. See logs for more details.", + level=Qgis.Critical, + ) + self.logger.error(str(e)) + return + + self.interlisImporterExporter.action_import() + + def _configure_database_connection_config_from_tww_layer(self) -> dict: + """Configures tww2ili using the currently loaded TWW project layer""" + + pg_layer = TwwLayerManager.layer("vw_tww_wastewater_structure") + if not pg_layer: + self.iface.messageBar().pushMessage( + "Error", + "Could not determine the Postgres connection information. Make sure the TWW project is loaded.", + level=Qgis.Critical, + ) + + DatabaseUtils.databaseConfig.PGSERVICE = pg_layer.dataProvider().uri().service() + DatabaseUtils.databaseConfig.PGHOST = pg_layer.dataProvider().uri().host() + DatabaseUtils.databaseConfig.PGPORT = pg_layer.dataProvider().uri().port() + DatabaseUtils.databaseConfig.PGDATABASE = pg_layer.dataProvider().uri().database() + DatabaseUtils.databaseConfig.PGUSER = pg_layer.dataProvider().uri().username() + DatabaseUtils.databaseConfig.PGPASS = pg_layer.dataProvider().uri().password() + + def _get_main_menu_action(self): + actions = self.iface.pluginMenu().actions() + result_actions = [action for action in actions if action.text() == self.main_menu_name] + + # OSX does not support & in the menu title + if not result_actions: + result_actions = [ + action + for action in actions + if action.text() == self.main_menu_name.replace("&", "") + ] + + return result_actions[0] + + def _wastewater_networkelement_layer_available_changed(self, available): + + self.connectNetworkElementsAction.setEnabled(available) + + if available: + self._configure_database_connection_config_from_tww_layer() + + self.tww_validity_check_startup() + + def update_admin_mode(self): + + admin_mode = QSettings().value("/TWW/AdminMode", False) + # seems QGIS loads True as "true" on restart ?! + if admin_mode and admin_mode != "false": + admin_mode = True + self.toolbar.addAction(self.importAction) + self.toolbar.addAction(self.exportAction) + else: + self.toolbar.removeAction(self.importAction) + self.toolbar.removeAction(self.exportAction) + admin_mode = False + + self.enableSymbologyTriggersAction.setEnabled(admin_mode) + self.disableSymbologyTriggersAction.setEnabled(admin_mode) diff --git a/plugin/teksi_interlis_tool/tests/__init__.py b/plugin/teksi_interlis_tool/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/tests/data/minimal-dataset-DSS.xtf b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-DSS.xtf new file mode 100644 index 0000000..32d934d --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-DSS.xtf @@ -0,0 +1,149 @@ + + + + + + + + + + + + dataset generated by xtfout version 1.5, (c) infoGrips GmbH 2005-2022 + + + + + + 20240104 + + + Kreisprofil + 1.00 + Kreisprofil + + + 20240104 + + + 2024 + ch000000RE000001 + in_Betrieb + + + PAA.Sammelkanal + Freispiegelleitung + + + 20240104 + + + 2024 + Test1 + in_Betrieb + + + 600 + 800 + Kontroll_Einsteigschacht + + + 20240104 + + + 2024 + Test2 + in_Betrieb + + + Kontroll_Einsteigschacht + + + 20240104 + + + Test1-Test2F + 448.100 + + 2745874.4451267494.562 + + + + + 20240104 + + + Test1-Test2T + 447.510 + + 2745935.9321267519.317 + + + + + 20240104 + + + Test1 + + + 2745874.4451267494.562 + + 448.000 + + + 20240104 + + + Test2 + + + 2745935.9321267519.317 + + 447.510 + + + 20240104 + + + rp_from_level added + Test1-Test2 + + 66.29 + 300 + Kunststoff_Polyvinilchlorid + + + 2745874.4451267494.562 + 2745935.9321267519.317 + + + + + + + + 20240104 + + + Test1 + + 451.000 + + 2745874.4451267494.562 + + + + 20240104 + + + Test2 + + 450.500 + + 2745935.9321267519.317 + + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/minimal-dataset-SIA405-ABWASSER.xtf b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-SIA405-ABWASSER.xtf new file mode 100644 index 0000000..f23b1bb --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-SIA405-ABWASSER.xtf @@ -0,0 +1,149 @@ + + + + + + + + + + + + dataset generated by xtfout version 1.5, (c) infoGrips GmbH 2005-2022 + + + + + + 20240104 + + + 2024 + ch000000RE000001 + in_Betrieb + + + PAA.Sammelkanal + Freispiegelleitung + + + 20240104 + + + 2024 + Test1 + in_Betrieb + + + 600 + 800 + Kontroll_Einsteigschacht + + + 20240104 + + + 2024 + Test2 + in_Betrieb + + + Kontroll_Einsteigschacht + + + 20240104 + + + Kreisprofil + 1.00 + Kreisprofil + + + 20240104 + + + Test1-Test2F + 448.100 + + 2745874.4451267494.562 + + + + + 20240104 + + + Test1-Test2T + 447.510 + + 2745935.9321267519.317 + + + + + 20240104 + + + Test1 + + + 2745874.4451267494.562 + + 448.000 + + + 20240104 + + + Test2 + + + 2745935.9321267519.317 + + 447.510 + + + 20240104 + + + rp_from_level added + Test1-Test2 + + 66.29 + 300 + Kunststoff_Polyvinilchlorid + + + 2745874.4451267494.562 + 2745935.9321267519.317 + + + + + + + + 20240104 + + + Test1 + + 451.000 + + 2745874.4451267494.562 + + + + 20240104 + + + Test2 + + 450.500 + + 2745935.9321267519.317 + + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/minimal-dataset-VSA-KEK-manhole-damage.xtf b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-VSA-KEK-manhole-damage.xtf new file mode 100644 index 0000000..435af2a --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-VSA-KEK-manhole-damage.xtf @@ -0,0 +1,150 @@ + + + + + + + + + + Dataset Generated by Stefan Burckhardt SJiB Testdata for manhole_damage, manhole 8486 + Adapted 1.12.2023 for VSA_KEK_2020_1_LV95 + 8.1.2024 Untersuchung.Art verschoben in Klasse Unterhalt - darum gelöscht + 8.1.2024 neu Ausfuehrende_FirmaRef REF="ch20p3q400002010" BID="Basket1" + 8.1.2024 Schaden auf Normschacht Test1 + 9.1.2024 Remove Metaattribute Tag + + + + + + + + + + + + + + + 20210120 + + + + Herr Mustermann + Testbemerkungen zum Untersuch + 8486 + + 1 + + + Zustandskontrolle + 0 + ausgefuehrt + 20210120 + + Kanalfernsehen + Testfahrzeug + Testkamera + 0 + + + Test1 + schoen_trocken + + + + + + + + + + + 20210120 + + unbekannt + + + 0.03 + 0 + + 05 + A + DARE + 07 + + nein + 00:00:05:00 + + + + + + 20210120 + wurde auch schon vor 3 Jahren festgestellt + unbekannt + + + 2.55 + 100 + + + A + DBCA + + + nein + 00:02:13:00 + + + + + + 20210119 + D:/DVD_Laufwerk/ + DVD + + Testdisk + + + + + + + 20210119 + + digitales_Video + + 8486_0001.mpg + Untersuchung + fk11abk6EX000002 + inspectiondata20210120/videos/ + + + + + + 20210119 + Foto + 8486_0001.jpg + Normschachtschaden + fk11abk6EX000002 + inspectiondata20210120/fotos + + + + + + 20210119 + Foto + 8486_0002.jpg + Normschachtschaden + fk11abk6EX000002 + inspectiondata20210120/fotos + + + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/minimal-dataset-organisation-arbon-only.xtf b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-organisation-arbon-only.xtf new file mode 100644 index 0000000..52933a4 --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-organisation-arbon-only.xtf @@ -0,0 +1,22 @@ + + + + + + + + + + dataset generated by VSA, last update 20231214 please send amendements and additions to dss-organisation@vsa.ch, data repository: https://www.vsa.ch/models/organisation/vsa_organisationen_2020_1.xtf + Arbon only + + + + + + 20211126 + Arbon4401Gemeindeaktiv + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/minimal-dataset-transferdatensatz_VSA-KEK-channel-damage.xtf b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-transferdatensatz_VSA-KEK-channel-damage.xtf new file mode 100644 index 0000000..6e89292 --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-transferdatensatz_VSA-KEK-channel-damage.xtf @@ -0,0 +1,286 @@ + + + + + + + + + + Dataset Generated by Stefan Burckhardt SJiB. + 8.1.2024 Adapted for VSA_KEK_2020_1_LV95 + 8.1.2023 Untersuchung.Art verschoben in Klasse Unterhalt - darum gelöscht + Ausfuehrende_FirmaRef REF="ch20p3q400002010" BID="Basket1" + von/bisPunktBezeichnung angepasst Test1 Test2 + Untersuchung.AbwasserbauwerkRef / HaltungspunktRef angepasst + 15.7.2024 Version that fits Transferdatensatz VSA-DSS 2020.1 - + 15.7.2024 Adapt Ausfuehrende_FirmaRef and DatenlieferantRef to ch20p3q400001729 + 15.7.2024 Adapt DatenherrRef to ch080qwzAV000007 (Abwasserverband Aletsch) (fiktiv) + + + + + + + + + + 20210120 + + + + + Herr Mustermann + Testbemerkungen zum Untersuch + 1.045-1.040 + + 1 + + + Zustandskontrolle + 850 + ausgefuehrt + 20210120 + 1.040 + Kanalfernsehen + Testfahrzeug + Testkamera + 11.50 + + + 1.045 + schoen_trocken + + + + + + + + + + 20210120 + + + unbekannt + + + 0 + AECXC + 300 + + 0 + 0 + + nein + + + + + + 20210120 + + + unbekannt + + + 0 + AEDXF + + + 0 + 0 + + nein + + + + + + 20210120 + + + unbekannt + + + 0 + AEF + 2000 + + 0 + 0 + + nein + + + + + + 20210120 + + + unbekannt + + + 0 + BCD + + + 0 + 0 + + nein + 00:00:00:00 + + + + + + 20210120 + + + unbekannt + + + 0.90 + BDBA + + + 0 + 0 + + nein + 00:00:00:00 + + + + + 20210120 + + + unbekannt + + + 5.29 + BCADA + + + 2 + 0 + + nein + 00:00:50:00 + + + + + 20210120 + + + unbekannt + + + 5.29 + BAGA + 15 + + 2 + 0 + + nein + 00:00:50:00 + + + + + 20210120 + + + unbekannt + + + 10.20 + BCE + + + 0 + 0 + + nein + 00:01:20:00 + + + + + 20210120 + + D:\DVD_Laufwerk\ + DVD + + Testdisk + + + + + + 20210120 + + + CD + + KINS-Export + + + + + + 20210120 + + + digitales_Video + + 1.045-1.040_0001.mpg + Untersuchung + fk11abk6w70lohup + inspectiondata\20210120\videos\ + + + + + + 20210120 + + Foto + 1.045-1.040_0001.jpg + Kanalschaden + fk11abk6w70lp75d + inspectiondata\20210120\fotos\ + + + + + + 20210120 + + Foto + 1.045-1.040_0002.jpg + Kanalschaden + fk11abk6w70lpw2w + inspectiondata\20210120\fotos\ + + + + + + 20210120 + + Foto + 1.045-1.040_0003.jpg + Kanalschaden + fk11abk6w70lpw2w + inspectiondata\20210120\fotos\ + + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/minimal-dataset-transferdatensatz_VSA-KEK-manhole-damage.xtf b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-transferdatensatz_VSA-KEK-manhole-damage.xtf new file mode 100644 index 0000000..5f7ac44 --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/minimal-dataset-transferdatensatz_VSA-KEK-manhole-damage.xtf @@ -0,0 +1,156 @@ + + + + + + + + + + Dataset Generated by Stefan Burckhardt SJiB Testdata for manhole_damage, manhole 8486 + Adapted 1.12.2023 for VSA_KEK_2020_1_LV95 + 8.1.2024 Untersuchung.Art verschoben in Klasse Unterhalt - darum gelöscht + 8.1.2024 neu Ausfuehrende_FirmaRef REF="ch20p3q400002010" BID="Basket1" + 8.1.2024 Schaden auf Normschacht Test1 + 9.1.2024 Remove Metaattribute Tag + 12.7.2024 Version that fits Transferdatensatz VSA-DSS 2020.1 - replaced with (1.040) + 15.7.2024 Adapt Ausfuehrende_FirmaRef and DatenlieferantRef to ch20p3q400001729 + 15.7.2024 Adapt DatenherrRef to ch080qwzAV000007 (Abwasserverband Aletsch) (fiktiv) + 15.7.2024 Change Bezeichnung and VonPunktBezeichnung of Untersuchung and filenames of fotos to 1.040 + 15.7.2024 Letzte_Aenderung changed to 20210120 + + + + + + + + + + + + + + + + 20210120 + + + + Herr Mustermann + Testbemerkungen zum Untersuch + 1.040 + + 1 + + + Zustandskontrolle + 0 + ausgefuehrt + 20210120 + + Kanalfernsehen + Testfahrzeug + Testkamera + 0 + + + 1.040 + schoen_trocken + + + + + + + + + + + 20210120 + + unbekannt + + + 0.03 + 0 + + 05 + A + DARE + 07 + + nein + 00:00:05:00 + + + + + + 20210120 + wurde auch schon vor 3 Jahren festgestellt + unbekannt + + + 2.55 + 100 + + + A + DBCA + + + nein + 00:02:13:00 + + + + + + 20210120 + D:\DVD_Laufwerk\ + DVD + + Testdisk + + + + + + + 20210120 + + digitales_Video + + 1.040_0001.mpg + Untersuchung + fk11abk6EX000002 + inspectiondata\20210120\videos\ + + + + + + 20210120 + Foto + 1.040_0001.jpg + Normschachtschaden + fk11abk6SS000001 + inspectiondata\20210120\fotos\ + + + + + + 20210120 + Foto + 1.040_0002.jpg + Normschachtschaden + fk11abk6SS000002 + inspectiondata\20210120\fotos\ + + + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/test-dataset-DSS.xtf b/plugin/teksi_interlis_tool/tests/data/test-dataset-DSS.xtf new file mode 100644 index 0000000..bbf8275 --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/test-dataset-DSS.xtf @@ -0,0 +1,106681 @@ + + + + + + + + + + dataset generated by xtfout version 1.2, (c) infoGrips GmbH 2005-2010. Edited additional classes and corrections 2015 Stefan Burckhardt, CC Siedlungsentwaesserung 11.8.2017 Replaced Status in_Betrieb.in_Betrieb with in_Betrieb; Added missing attribute for Traegerschaft: Finanzierung, Nutzungsart_geplant, Nutzungsart_Ist, Einzugsgebiet.Flaeche, Einleitstelle.Relevanz, Rohrprofil unbekannt 3.3.2020 re-checked correction double OBJ_ID Privat / Edited 6.3.2020 for LV95 / Edited for Version 2020 30.9.2020 / 3.10.2020 Stammkarten added / Edited 14./16.10.2020 / 26.10.2020 fehlende Klassen Gesamteinzugsgebiet, 9.11.2020 EZG_PARAMETER_ALLG / 25.10.2023 Release angepasst DSS_2020_2_LV95/ 8.11.2023 Zustandsnote und Dringlichkeitszahl Beispiel ergänzt für Text DSS2MINI + + + + + + + + + + + + + + + + + + + + + 20191014 + + + geaendert + OBJ ID + Update DABASE + Abwasserverband + ZZZ AV7 + 20080417 + ch080qwzAV000007 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + OBJ ID + Update DABASE + Amt + ZZZ AM1217 + 20080417 + ch080qwzAM001217 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + OBJ ID + Update DABASE + Gemeinde + ZZZ GE1036 + 20080417 + ch080qwzGE001036 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + OBJ ID + Update DABASE + Gemeinde + ZZZ GE1037 + 20080417 + ch080qwzGE001037 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + OBJ ID + Update DABASE + Gemeinde + ZZZ GE1039 + 20080417 + ch080qwzGE001039 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Erhaltungsereignis + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ EH1005 + 20080417 + ch080qwzRA007000 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Abwasserbauwerk + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ SW142 + 20080417 + ch080qwzRA007000 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Erhaltungsereignis + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ EH1128 + 20080417 + ch080qwzRA007001 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Abwasserbauwerk + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ KA1110 + 20080417 + ch080qwzRA007001 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Erhaltungsereignis + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ EH1128 + 20080417 + ch080qwzRA007002 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Abwasserbauwerk + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ KA1111 + 20080417 + ch080qwzRA007002 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Erhaltungsereignis + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ EH1128 + 20080417 + ch080qwzRA007003 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Abwasserbauwerk + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ KA1112 + 20080417 + ch080qwzRA007003 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Erhaltungsereignis + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ EH1128 + 20080417 + ch080qwzRA007004 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Abwasserbauwerk + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ SW1128 + 20080417 + ch080qwzRA007004 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Erhaltungsereignis + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ EH1129 + 20080417 + ch080qwzRA007005 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + FS Abwasserbauwerk + Update DABASE + Erhaltungsereignis Abwasserbauwerk + ZZZ SW1128 + 20080417 + ch080qwzRA007005 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 0 + 20140519 + ch080qwzRG001246 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 1 + 20140519 + ch080qwzRG001247 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 2 + 20140519 + ch080qwzRG001248 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 3 + 20140519 + ch080qwzRG001249 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 4 + 20140519 + ch080qwzRG001250 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 5 + 20140519 + ch080qwzRG001251 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 6 + 20140519 + ch080qwzRG001252 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 7 + 20140519 + ch080qwzRG001253 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 8 + 20140519 + ch080qwzRG001254 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geaendert + POSITION + Rohrprofil Geometrie + 9 + 20140519 + ch080qwzRG001255 + Stefan Burckhardt + + + + + + + + + 20191014 + + + + geloescht + ART + ElektromechanischeAusruestung + Sieb + 20140519 + ch080qwzEA001006 + Stefan + + + + + + + + + 20191014 + + + + geloescht + Bruttokosten + ElektromechanischeAusruestung + 5600 + 20140519 + ch080qwzEA001006 + Stefan + + + + + + + + + 20191014 + + + + geloescht + ERSATZJAHR + ElektromechanischeAusruestung + 2010 + 20140519 + ch080qwzEA001006 + Stefan + + + + + + + + + 20191014 + + + + geloescht + INSTANDSTELLUNG + ElektromechanischeAusruestung + nicht notwendig + 20140519 + ch080qwzEA001006 + Stefan + + + + + + + + + 20191014 + + + + geloescht + ERSATZJAHR + ElektromechanischeAusruestung + 2010 + 20140519 + ch080qwzEA001006 + Stefan + + + + + + + + + 20191014 + + + + geloescht + BEZEICHNUNG + ElektromechanischeAusruestung + EA1006 + 20140519 + ch080qwzEA001006 + Stefan + + + + + + + + + 20191014 + + + + geloescht + ART + ElektromechanischeAusruestung + Tauchwand + 20140519 + ch080qwzEA001233 + Stefan + + + + + + + + + 20191014 + + + + geloescht + ERSATZJAHR + ElektromechanischeAusruestung + 2004 + 20140519 + ch080qwzEA001233 + Stefan + + + + + + + + + 20191014 + + + + geloescht + INSTANDSTELLUNG + ElektromechanischeAusruestung + notwendig + 20140519 + ch080qwzEA001233 + Stefan + + + + + + + + + 20191014 + + + + geloescht + OBJ ID + ElektromechanischeAusruestung + ch080qwzEA001233 + 20140519 + ch080qwzEA001233 + Stefan + + + + + + + + + 20191014 + + + + geloescht + BEZEICHNUNG + ElektromechanischeAusruestung + Tauchwand1 + 20140519 + ch080qwzEA001233 + Stefan + + + + + + + + + 20191014 + + + + geloescht + OBJ ID + ElektromechanischeAusruestung + ch080qwzEA001006 + 20140519 + ch080qwzEA001006 + Stefan + + + + + 2646370.000 + 1139763.000 + + + 233.0 + Left + Top + Uebersichtsplan.UeP10 + VB1 + + + + + + 2646370.000 + 1139763.000 + + + 233.0 + Uebersichtsplan.UeP5 + 5 + 5 + + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.003-1.002 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.002-1.001 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.001-0.001 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + entlastetes_Mischabwasser + entlastetes_Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.030-1.003 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.001-1.030 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.002-2.001 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.003-2.002 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.002E-0.002 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.004-2.003 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.005-2.004 + oeffentlich + dringend + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.006-2.005 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 2.007-2.006 + oeffentlich + langfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.035-1.030 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.040-1.035 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.045-1.040 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.050-1.045 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.055-1.050 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.056-1.055 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.057-1.056 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062-1.057 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.002A-1.062A + oeffentlich + langfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + Los 1 + 10.003-10.002C + 5000.00 + 2030 + oeffentlich + 0.50 + unbekannt + in_Betrieb + 500.00 + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Hauptsammelkanal + Duekerleitung + Mischabwasser + Mischabwasser + 0.50 + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + Los 1 + 10.003-10.002A + 5055.00 + 2030 + oeffentlich + 0.50 + unbekannt + in_Betrieb + 505.50 + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Hauptsammelkanal + Duekerleitung + Mischabwasser + Mischabwasser + 0.50 + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + Los 1 + 10.003-10.002B + 10000.00 + 2030 + oeffentlich + 0.50 + unbekannt + in_Betrieb + 1000.00 + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + PAA.Hauptsammelkanal + Duekerleitung + Mischabwasser + Mischabwasser + 10.50 + 0.50 + Vortriebsrohrkupplung + + + + + + + + + 20191014 + + + + 1972 + Z4 + Los 1 + Transferdatensatz, keine reale Abbildung + 10.004A-10.003A + 4400.00 + 2030 + oeffentlich + 0.50 + unbekannt + in_Betrieb + 440.00 + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + PAA.Hauptsammelkanal + Duekerleitung + Mischabwasser + Mischabwasser + 5.50 + 0.50 + Vortriebsrohrkupplung + + + + + + + + + 20191014 + + + + 1972 + Z4 + Los 1 + 10.004B-10.003B + 7500.00 + 2030 + oeffentlich + 0.50 + unbekannt + in_Betrieb + 750.00 + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Hauptsammelkanal + Duekerleitung + Mischabwasser + Mischabwasser + 0.50 + Steckmuffen + + + + + + + + + 20191014 + + + + 1972 + Z4 + Los 1 + 10.003C-10.003C + 3000.00 + 2030 + oeffentlich + 0.50 + unbekannt + in_Betrieb + 300.00 + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Hauptsammelkanal + Duekerleitung + Mischabwasser + Mischabwasser + 0.50 + Steckmuffen + + + + + + + + + 20191014 + + + + 1972 + Z4 + 10.004-0.005 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + PAA.Hauptsammelkanal + Freispiegelleitung + entlastetes_Mischabwasser + entlastetes_Mischabwasser + 1.00 + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.010-10.004 + oeffentlich + mittelfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.030-10.010 + oeffentlich + kurzfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.050-10.030 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.085-10.050 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.095-10.085B + oeffentlich + langfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.097-10.095 + oeffentlich + mittelfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.098-10.097 + oeffentlich + kurzfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 10.099-10.098 + oeffentlich + mittelfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1980 + Z4 + 11.001A-10.085A + oeffentlich + dringend + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ1 + PAA.Sanierungsleitung + Freispiegelleitung + Mischabwasser + Mischabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1980 + Z4 + 11.002-11.001 + oeffentlich + kurzfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ1 + PAA.Sanierungsleitung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1980 + Z4 + 11.003-11.002 + oeffentlich + mittelfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ1 + PAA.Sanierungsleitung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1980 + Z4 + 11.004-11.003 + oeffentlich + langfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ1 + PAA.Sanierungsleitung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.070-1.062 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.080-1.070 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.090-1.080 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.100-1.090 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ2 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Glockenmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.110.2-1.100 + oeffentlich + mittelfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1976 + Z1 + 1.110.1-1.100.1 + oeffentlich + langfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1976 + Z1 + 1.100.1-1.200 + oeffentlich + langfristig + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + 2.00 + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 3.025-3.010 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Sammelkanal + Pumpendruckleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 3.010-3.001 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + 3.001-1.057 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + PAA.Sammelkanal + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1072 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1073 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ4 + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + Steckmuffen + + + + + + + + + 20191014 + + + + 1989 + Z4 + TS0-VB1 + privat + keiner + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + TS0-VB2 + privat + keiner + ausser_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + PAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + TS0-VB3 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + TS1-BB + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + TS1-TS2 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + TS2-FBR1 + oeffentlich + keiner + weitere.geplant + 2000 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + TS2-FBR2 + oeffentlich + keiner + weitere.geplant + 2000 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TS2-TS3 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TS3-FBR3 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TS3-TS4 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TS4-TTK + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TS4-TK + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + zugaenglich + + + erdverlegt + SAA.andere + Pumpendruckleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1960 + Z4 + 1.001-TS0 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + SIA_Typ3 + PAA.Hauptsammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Spitzmuffen + + + + + + + + + 20191014 + + + + 1980 + Z4 + VB1-TS1 + oeffentlich + 0.50 + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1960 + Z4 + VB2-TS1 + oeffentlich + 0.50 + keiner + ausser_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + VB3-TS1 + oeffentlich + 0.50 + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + FBR1-KS2 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + FBR2-KS2 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + KS3-KS2 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + FBR3-KS3 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + KS4-KS3 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TTK-KS4 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + TK-KS4 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 2020 + Z4 + KS2-KS5 + oeffentlich + keiner + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1960 + Z4 + BB-AB + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1960 + Z4 + AB-KS5 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + SAA.andere + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + FB-2.001 + oeffentlich + keiner + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + erdverlegt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + Vortriebsrohrkupplung + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062.05-1.070-1.06 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Strassenentwaesserung + Freispiegelleitung + Mischabwasser + Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062.04-1.070-1.06 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Strassenentwaesserung + Freispiegelleitung + Niederschlagsabwasser + Niederschlagsabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062.031-1.062.03 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Strassenentwaesserung + Freispiegelleitung + Niederschlagsabwasser + Niederschlagsabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062.03-1.070-1.06 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Strassenentwaesserung + Freispiegelleitung + Niederschlagsabwasser + Niederschlagsabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.070.1-1.070 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + PAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.070.11-1.070.1 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1331 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1332 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1333 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1334 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1997 + Z4 + 1.062.1-1.062 + oeffentlich + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1997 + Z4 + 1.062.2-1.062 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1337 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1338 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1339 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062.02-1.070-1.06 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + 1.062.01-1.070-1.06 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + VB214003-1.062.02 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + 2.00 + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KA1345 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Schmutzabwasser + Schmutzabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + V1.102-V1.101 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Niederschlagsabwasser + Niederschlagsabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + V1.101-V1.100 + privat + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + unbekannt + SAA.Liegenschaftsentwaesserung + Freispiegelleitung + Niederschlagsabwasser + Niederschlagsabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1989 + Z4 + KS5-0.000 + 2005 + privat + 1.00 + unbekannt + ARA Aletsch + in_Betrieb + 1970 + Feld + 0.00 + unzugaenglich + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + entlastetes_Mischabwasser + entlastetes_Mischabwasser + unbekannt + + + + + + + + + 20191014 + + + + 1800 + Z4 + EK2-SH1 + 2004 + privat + dringend + Landstrasse + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + unbekannt + PAA.Sammelkanal + Freispiegelleitung + Mischabwasser + Mischabwasser + 5.00 + unbekannt + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + Werte sind als Beispiel drin und entsprechen nicht Dimensionierungsrichtlinien + ARA Aletsch + 345677 + 11 + 30 + 90 + 57 + 91 + 92 + 1960 + 30 + + + + + + + + + 20191014 + + + + Beispieldaten, kein Anspruch auf sinnvolle Dimensionierung + ARA Energienutzung + 10000 + 5000 + 5000 + + + + + + + + + + 20191014 + + + + biologisch + Test + Belebungsbecken + + + + + + + + + + 20191014 + + + + mechanisch + Rechen + + + + + + + + + + 20191014 + + + + chemisch + P-Fällung + + + + + + + + + + 20191014 + + + + Filtration + Aktivekohle-Filter + + + + + + + + + + 20191014 + + + + Schlammbehandlung + 2.50 + 1.20 + 200.00 + 0.00 + 3.60 + 0.00 + 4.30 + 3.60 + 2.40 + + + + + + + + + + 20191014 + + + + Zentrale ARA + + + 2646360.000 + 1139570.000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + unbekannt + HA1406A + unbekannt + 2738.500 + + + 2645200.000 + 1149950.000 + + + 2 + + + + + + + + + + 20191014 + + + + unbekannt + HA1406E + unbekannt + 2736.500 + + + 2645200.000 + 1149940.690 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA17A + unbekannt + 1915.050 + + + 2646497.500 + 1139902.200 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA17E + unbekannt + 1913.600 + + + 2646410.000 + 1139809.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA18A + unbekannt + 1913.550 + + + 2646410.000 + 1139809.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA18E + unbekannt + 1913.520 + + + 2646401.000 + 1139801.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA20A + unbekannt + 1913.000 + + + 2646400.250 + 1139798.500 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA20E + plusminus_6cm + 1911.000 + + + 2646450.000 + 1139600.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA23A + unbekannt + 2200.000 + + + 2648150.120 + 1143401.760 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA23E + unbekannt + 1915.100 + + + 2646497.500 + 1139902.200 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA30A + unbekannt + 2201.400 + + + 2648000.000 + 1143400.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA30E + unbekannt + 2200.000 + + + 2648150.120 + 1143401.760 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA39A + unbekannt + 2202.400 + + + 2647982.514 + 1143400.264 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA39E + unbekannt + 2201.400 + + + 2648000.000 + 1143400.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA42A + unbekannt + 2203.050 + + + 2647940.000 + 1143400.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA42E + unbekannt + 2202.500 + + + 2647976.762 + 1143400.264 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA47A + unbekannt + 2201.000 + + + 2647977.965 + 1143397.595 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA47E + unbekannt + 2165.500 + + + 2648225.000 + 1143025.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA50A + unbekannt + 2225.500 + + + 2647450.000 + 1143530.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA50E + unbekannt + 2205.550 + + + 2647940.000 + 1143400.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA55A + unbekannt + 2250.500 + + + 2647100.000 + 1143650.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA55E + unbekannt + 2225.500 + + + 2647450.000 + 1143530.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA59A + unbekannt + 2380.500 + + + 2646750.000 + 1143820.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA59E + unbekannt + 2250.500 + + + 2647100.000 + 1143650.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA62A + unbekannt + 2445.500 + + + 2646570.000 + 1144000.100 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA62E + unbekannt + 2380.500 + + + 2646750.000 + 1143820.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA65A + unbekannt + 2380.500 + + + 2648490.000 + 1145001.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA65E + unbekannt + 2200.000 + + + 2648150.120 + 1143401.760 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA68A + unbekannt + 2431.600 + + + 2648300.000 + 1146002.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA68E + unbekannt + 2380.500 + + + 2648490.000 + 1145001.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA71A + unbekannt + 2492.500 + + + 2648001.000 + 1146999.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA71E + unbekannt + 2431.600 + + + 2648300.000 + 1146002.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA74A + unbekannt + 2559.820 + + + 2647210.000 + 1147998.300 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA74E + unbekannt + 2492.500 + + + 2648001.000 + 1146999.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA77A + unbekannt + 2655.500 + + + 2646573.000 + 1149052.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA77E + unbekannt + 2559.820 + + + 2647210.000 + 1147998.300 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA80A + unbekannt + 2668.500 + + + 2646480.000 + 1149250.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA80E + unbekannt + 2655.500 + + + 2646573.000 + 1149052.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA83A + unbekannt + 2683.500 + + + 2646325.000 + 1149500.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA83E + unbekannt + 2668.500 + + + 2646480.000 + 1149250.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA87A + unbekannt + 2700.000 + + + 2646103.000 + 1149720.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA87E + unbekannt + 2683.500 + + + 2646325.000 + 1149500.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA90A + unbekannt + 2702.000 + + + 2646150.000 + 1149925.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA90E + unbekannt + 2700.000 + + + 2646103.000 + 1149720.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA95A + unbekannt + 2692.000 + + + 2646151.000 + 1149950.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA95E + unbekannt + 2702.000 + + + 2646150.000 + 1149925.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA96A + unbekannt + 2692.000 + + + 2646150.400 + 1149950.014 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA96E + unbekannt + 2702.000 + + + 2646149.400 + 1149925.024 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA97A + unbekannt + 2692.000 + + + 2646151.600 + 1149949.986 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA97E + unbekannt + 2702.000 + + + 2646150.600 + 1149924.976 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA101A + unbekannt + 2702.900 + + + 2646152.606 + 1150109.267 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA101E + unbekannt + 2692.000 + + + 2646151.600 + 1149949.986 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA102A + unbekannt + 2702.800 + + + 2646151.408 + 1150109.201 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA102E + unbekannt + 2692.000 + + + 2646150.400 + 1149950.014 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA103A + unbekannt + 2702.700 + + + 2646152.007 + 1150109.201 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA103E + unbekannt + 2692.000 + + + 2646151.000 + 1149950.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA105A + unbekannt + 2704.000 + + + 2646153.572 + 1150109.800 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA105E + unbekannt + 2696.000 + + + 2646162.000 + 1150000.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA108A + unbekannt + 2714.500 + + + 2646003.000 + 1150257.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA108E + unbekannt + 2703.000 + + + 2646151.208 + 1150110.799 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA111A + unbekannt + 2796.500 + + + 2645000.000 + 1151700.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA111E + unbekannt + 2714.500 + + + 2646003.000 + 1150257.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA114A + unbekannt + 2951.500 + + + 2644001.320 + 1153001.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA114E + unbekannt + 2796.500 + + + 2645000.000 + 1151700.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA117A + unbekannt + 3176.500 + + + 2642500.000 + 1154000.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA117E + unbekannt + 2951.500 + + + 2644001.320 + 1153001.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA120A + unbekannt + 3356.500 + + + 2641700.000 + 1155002.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA120E + unbekannt + 3176.500 + + + 2642500.000 + 1154000.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA123A + unbekannt + 3397.500 + + + 2641680.000 + 1155230.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA123E + unbekannt + 3356.500 + + + 2641700.000 + 1155002.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA126A + unbekannt + 3397.700 + + + 2641680.000 + 1155250.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA126E + unbekannt + 3397.500 + + + 2641680.000 + 1155230.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA131A + unbekannt + 3450.700 + + + 2641700.000 + 1155580.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA131E + unbekannt + 3448.700 + + + 2641680.000 + 1155250.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA134A + unbekannt + 3176.600 + + + 2642561.986 + 1154527.180 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA134E + unbekannt + 3176.500 + + + 2642500.000 + 1154000.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA137A + unbekannt + 3414.500 + + + 2643099.000 + 1155003.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA137E + unbekannt + 3176.600 + + + 2642561.986 + 1154527.180 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA140A + unbekannt + 3617.100 + + + 2643582.000 + 1156033.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA140E + unbekannt + 3414.500 + + + 2643099.000 + 1155003.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA144A + unbekannt + 3619.500 + + + 2643582.000 + 1156053.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA144E + unbekannt + 3619.200 + + + 2643582.000 + 1156033.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA146A + unbekannt + 2736.500 + + + 2645200.000 + 1149950.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA146E + unbekannt + 2700.000 + + + 2646103.000 + 1149720.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA149A + unbekannt + 2794.500 + + + 2644125.000 + 1149500.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA149E + unbekannt + 2736.500 + + + 2645200.000 + 1149950.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA152A + unbekannt + 2896.500 + + + 2643250.000 + 1148900.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA152E + unbekannt + 2794.500 + + + 2644125.000 + 1149500.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA155A + unbekannt + 2976.500 + + + 2642300.000 + 1148300.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA155E + unbekannt + 2896.500 + + + 2643250.000 + 1148900.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA158A + unbekannt + 3056.500 + + + 2640900.000 + 1147400.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA158E + unbekannt + 2976.500 + + + 2642300.000 + 1148300.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1014A + unbekannt + 3056.500 + + + 2640892.002 + 1147409.645 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1014E + unbekannt + 2976.500 + + + 2642297.031 + 1148312.317 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1032A + unbekannt + 2975.000 + + + 2642297.031 + 1148312.317 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1032E + unbekannt + 2897.230 + + + 2642824.905 + 1149343.304 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1068A + unbekannt + 3046.200 + + + 2651878.454 + 1152540.236 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1068E + unbekannt + 3284.000 + + + 2649482.777 + 1151464.103 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1069A + unbekannt + 3283.000 + + + 2649482.777 + 1151464.103 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1069E + unbekannt + 2700.780 + + + 2647196.507 + 1150443.315 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1070A + unbekannt + 2701.560 + + + 2647196.507 + 1150443.315 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1070E + unbekannt + 2685.000 + + + 2646325.000 + 1149500.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1072A + unbekannt + 3052.000 + + + 2652036.243 + 1152593.153 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1072E + unbekannt + 3045.000 + + + 2651878.454 + 1152540.236 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1073A + unbekannt + 3047.000 + + + 2652058.491 + 1152437.417 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1073E + unbekannt + 3044.200 + + + 2651878.454 + 1152540.236 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1130A + unbekannt + 1913.500 + + + 2646398.800 + 1139799.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1130E + unbekannt + 1913.400 + + + 2646390.000 + 1139790.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1149A + unbekannt + 1913.400 + + + 2646390.000 + 1139790.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1149E + unbekannt + 1913.000 + + + 2646360.000 + 1139795.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1150A + unbekannt + 1913.400 + + + 2646390.000 + 1139790.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1150E + unbekannt + 1913.000 + + + 2646375.000 + 1139780.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1151A + unbekannt + 1913.400 + + + 2646390.000 + 1139790.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1151E + unbekannt + 1913.000 + + + 2646390.000 + 1139765.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1152A + unbekannt + 1912.000 + + + 2646345.141 + 1139749.859 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1152E + unbekannt + 1911.800 + + + 2646337.500 + 1139742.500 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1153A + unbekannt + 1912.000 + + + 2646330.046 + 1139764.709 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1153E + unbekannt + 1911.800 + + + 2646337.500 + 1139742.500 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1154A + unbekannt + 1912.000 + + + 2646360.054 + 1139734.946 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1154E + unbekannt + 1911.800 + + + 2646337.500 + 1139742.500 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1155A + unbekannt + 1911.800 + + + 2646337.500 + 1139742.500 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1155E + unbekannt + 1911.500 + + + 2646335.000 + 1139740.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1156A + unbekannt + 1910.500 + + + 2646315.000 + 1139720.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1156E + unbekannt + 1910.000 + + + 2646305.000 + 1139710.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1157A + unbekannt + 1909.000 + + + 2646275.000 + 1139680.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1157E + unbekannt + 1908.000 + + + 2646240.000 + 1139605.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1162A + unbekannt + 1911.500 + + + 2646337.500 + 1139742.500 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1162E + unbekannt + 1911.000 + + + 2646275.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1163A + unbekannt + 1911.000 + + + 2646275.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1163E + unbekannt + 1910.500 + + + 2646260.000 + 1139660.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1164A + unbekannt + 1911.000 + + + 2646275.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1164E + unbekannt + 1910.500 + + + 2646290.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1165A + unbekannt + 1911.000 + + + 2646275.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1165E + unbekannt + 1910.500 + + + 2646275.000 + 1139660.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1166A + unbekannt + 1910.500 + + + 2646290.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1166E + unbekannt + 1910.500 + + + 2646290.000 + 1139660.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1167A + unbekannt + 1910.500 + + + 2646290.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1167E + unbekannt + 1910.500 + + + 2646310.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1168A + unbekannt + 1910.500 + + + 2646310.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1168E + unbekannt + 1914.500 + + + 2646310.000 + 1139660.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1169A + unbekannt + 1910.500 + + + 2646310.000 + 1139665.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1169E + unbekannt + 1910.500 + + + 2646330.000 + 1139660.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1170A + unbekannt + 1909.500 + + + 2646260.000 + 1139630.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1170E + unbekannt + 1909.000 + + + 2646275.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1171A + unbekannt + 1909.500 + + + 2646275.000 + 1139630.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1171E + unbekannt + 1909.000 + + + 2646275.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1172A + unbekannt + 1909.500 + + + 2646290.000 + 1139630.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1172E + unbekannt + 1909.000 + + + 2646290.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1173A + unbekannt + 1909.000 + + + 2646290.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1173E + unbekannt + 1909.000 + + + 2646275.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1174A + unbekannt + 1909.500 + + + 2646310.000 + 1139640.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1174E + unbekannt + 1909.000 + + + 2646310.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1175A + unbekannt + 1909.000 + + + 2646310.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1175E + unbekannt + 1909.000 + + + 2646290.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1176A + unbekannt + 1910.500 + + + 2646330.000 + 1139630.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1176E + unbekannt + 1909.000 + + + 2646310.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1177A + unbekannt + 1909.000 + + + 2646275.000 + 1139625.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1177E + unbekannt + 1908.000 + + + 2646240.000 + 1139605.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1216A + unbekannt + 2201.400 + + + 2648000.000 + 1143400.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1216E + unbekannt + 2202.000 + + + 2647997.596 + 1143425.976 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1325A + unbekannt + + + 2645366.137 + 1149981.606 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1325E + unbekannt + + + 2645382.014 + 1149950.536 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1326A + unbekannt + + + 2645461.219 + 1149969.721 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1326E + unbekannt + + + 2645473.170 + 1149942.569 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1327A + unbekannt + + + 2645544.416 + 1149961.798 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1327E + unbekannt + + + 2645627.613 + 1149941.989 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1328A + unbekannt + + + 2645627.613 + 1149941.989 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1328E + unbekannt + + + 2645643.084 + 1149912.723 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + Kote noch nicht erfasst + HA1329A + unbekannt + 2736.710 + + + 2645144.278 + 1150033.109 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1329E + unbekannt + 2736.500 + + + 2645200.000 + 1149950.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1330A + unbekannt + + + 2645259.169 + 1150084.612 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1330E + unbekannt + 2736.72 + + + 2645144.278 + 1150033.109 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1331A + unbekannt + + + 2645259.169 + 1150084.612 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1331E + unbekannt + + + 2645352.390 + 1150121.281 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1332A + unbekannt + + + 2645265.099 + 1150121.281 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1332E + unbekannt + + + 2645259.169 + 1150084.612 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1333A + unbekannt + + + 2645189.838 + 1150112.345 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1333E + unbekannt + + + 2645197.685 + 1150057.051 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1334A + unbekannt + + + 2644896.841 + 1149922.148 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1334E + unbekannt + 2736.700 + + + 2645144.278 + 1150033.109 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1335A + unbekannt + + + 2646043.599 + 1149644.856 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1335E + unbekannt + + + 2646103.000 + 1149720.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1336A + unbekannt + + + 2646063.408 + 1149811.250 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1336E + unbekannt + + + 2646103.000 + 1149720.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1337A + unbekannt + + + 2646031.714 + 1149579.487 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1337E + unbekannt + + + 2646043.599 + 1149644.856 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1338A + unbekannt + + + 2645980.211 + 1149672.588 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1338E + unbekannt + + + 2646043.599 + 1149644.856 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1339A + unbekannt + + + 2646015.867 + 1149819.174 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1339E + unbekannt + + + 2646073.343 + 1149788.353 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1342A + unbekannt + + + 2645593.938 + 1149827.097 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1342E + unbekannt + + + 2645643.084 + 1149912.723 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1343A + unbekannt + + + 2645744.485 + 1149783.518 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1343E + unbekannt + + + 2645825.587 + 1149857.508 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1344A + unbekannt + + + 2645559.217 + 1149817.193 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1344E + unbekannt + + + 2645593.938 + 1149827.097 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1345A + unbekannt + + + 2645574.129 + 1149775.594 + + + 0 + + + + + + + + + 20191014 + + + + unbekannt + HA1345E + unbekannt + + + 2645593.938 + 1149827.097 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1353A + unbekannt + + + 2644809.550 + 1149894.870 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1353E + unbekannt + + + 2644771.360 + 1149998.528 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1354A + unbekannt + + + 2644771.360 + 1149998.528 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1354E + unbekannt + + + 2644839.938 + 1150030.877 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + HA1403A + unbekannt + 1908.000 + + + 2646240.000 + 1139605.000 + + + 0 + + + + + + + + + + 20191014 + + + + unbekannt + ZZZHA1403E + plusminus_6cm + 1904.000 + + + 2645890.000 + 1139276.300 + + + 0 + + + + + + + + + + 20191014 + + + + VB + + + + + + + + + 20191014 + + + + Belebungsbecken + BB + + + + + + + + + 20191014 + + + + AB + + + + + + + + + 20191014 + + + + FBR + + + + + + + + + 20191014 + + + + TTR + + + + + + + + + 20191014 + + + + TK + + + + + + + + + 20191014 + + + + FB + + + + + + + + + 20191014 + + + + 0.00 + 588.00 + 0.00 + + + + + + + + + + 20191014 + + + + 42.00 + 588.00 + 3.00 + + + + + + + + + + 20191014 + + + + 0.00 + 784.00 + 0.00 + + + + + + + + + + 20191014 + + + + 132.00 + 784.00 + 4.70 + + + + + + + + + + 20191014 + + + + 0.00 + 70.00 + 0.00 + + + + + + + + + + 20191014 + + + + 14.40 + 98.00 + 1.10 + + + + + + + + + + 20191014 + + + + 29.40 + 588.00 + 2.10 + + + + + + + + + + 20191014 + + + + 72.80 + 588.00 + 5.20 + + + + + + + + + + 20191014 + + + + 0.00 + 300.00 + 0.00 + + + + + + + + + + 20191014 + + + + 45.00 + 300.00 + 4.50 + + + + + + + + + + 20191014 + + + + 0.00 + 200.00 + 0.00 + + + + + + + + + + 20191014 + + + + 13.00 + 200.00 + 1.30 + + + + + + + + + + 20191014 + + + + 0.00 + 0.00 + 0.00 + + + + + + + + + + 20191014 + + + + 10.00 + 300.00 + 1.00 + + + + + + + + + + 20191014 + + + + 40.00 + 300.00 + 4.00 + + + + + + + + + + 20191014 + + + + 0.00 + 0.00 + 0.00 + + + + + + + + + + 20191014 + + + + 2.00 + 96.00 + 0.50 + + + + + + + + + + 20191014 + + + + 22.00 + 96.00 + 3.00 + + + + + + + + + + 20191014 + + + + Kreisprofil + 1.00 + Kreisprofil + + + + + + + + + 20191014 + + + + Rechteckprofil + 1.50 + Rechteckprofil + + + + + + + + + 20191014 + + + + Spezialprofil + 1.45 + Spezialprofil + + + + + + + + + 20191014 + + + + Quadrat + 1.00 + Rechteckprofil + + + + + + + + + 20191014 + + + + unbekannt + 1.00 + unbekannt + + + + 20191014 + + + + 1988 + Z0 + V1.100 + 2010 + oeffentlich + 1.00 + keiner + Hoffeld + in_Betrieb + 0.00 + 1970 + Feld + 0.00 + zugaenglich + + + Versickerungsschacht + beschriftet + 5.00 + unwesentliche + in_Gewaesser + zugaenglich + 123.300 + Niederschlagsabwasser + wasserdicht + 124.00 + + + + + + + + + + 20191014 + + + + KuenstlicherAdsorber + Eingebaut in Versickerungsschacht + MV1243 + + + + + + + + + + + 20191014 + + + + Schlammsammler + Im Versickerungsschacht + MV1244 + + + + + + 20191014 + + + + grobe Annäherung + WE1 + HQ + + + + + + 20201026 + + + + Messung notwendig + WE2 + unbekannt + + + + + 20191014 + + + + Dachretention + V1.100 + + + + + + + + + + + 20191014 + + + + 203 + 1913.500 + + + + + + + + + + 20191014 + + + + 230 + 1913.950 + + + + + + + + + + 20191014 + + + + 256 + 1913.990 + + + + + + + + + + 20191014 + + + + 275 + 1914.260 + + + + + + + + + + 20191014 + + + + 1914.650 + + + + + + + + + + 20191014 + + + + 299 + 1914.790 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + Mittelaletsch1 + ja + nein + ModifiziertesSystem + ModifiziertesSystem + 99999.9 + + + + + + 2646570.000 + 1144000.100 + + + 2646477.898 + 1143887.965 + + + 2646325.822 + 1143868.215 + + + 2646132.271 + 1143907.715 + + + 2646179.671 + 1144038.066 + + + 2646306.072 + 1144091.392 + + + 2646497.648 + 1144073.616 + + + 2646570.000 + 1144000.100 + + + + + + ja + nein + 1.450 + 1.330 + nein + nein + + + + + + + + + 20191014 + + + + 95 + Mittelaletsch2 + Trennsystem + 99999.9 + 1.300 + + + + + + 2646477.898 + 1143887.965 + + + 2646744.525 + 1143824.765 + + + 2646533.198 + 1143652.939 + + + 2646460.123 + 1143548.263 + + + 2646412.723 + 1143698.364 + + + 2646335.652 + 1143871.365 + + + 2646477.898 + 1143887.965 + + + + + + 12.300 + + + + + + + + + 20191014 + + + + 50 + Mittelaletsch3 + Trennsystem + 99999.9 + + + + + + 2646558.875 + 1144011.404 + + + 2646679.349 + 1144071.641 + + + 2646815.625 + 1143963.016 + + + 2646750.000 + 1143820.000 + + + 2646743.537 + 1143823.962 + + + 2646744.525 + 1143824.765 + + + 2646734.189 + 1143829.691 + + + 2646538.989 + 1143949.336 + + + 2646570.000 + 1144000.100 + + + 2646558.875 + 1144011.404 + + + + + + + + + + 20191014 + + + + Mittelaletsch5 + 1 + Mittelaletsch5 + 2 + 0 + 2 + 2 + 123.0 + + + + + + 20191014 + + + + 67 + 67 + Mittelaletsch4 + Mischsystem + 99999.9 + + + + + + 2646538.989 + 1143949.336 + + + 2646734.189 + 1143829.691 + + + 2646521.696 + 1143930.971 + + + 2646477.898 + 1143887.965 + + + 2646538.989 + 1143949.336 + + + + + + + + + + 2646600.000 + 1144000.000 + + + 0.0 + Center + Bottom + Uebersichtsplan.UeP2 + RTW geplant + GEP Einzugsgebiete + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + Abflussmessung + Betreuung durch ARA Personal + Ablauf VKB + + + 2646345.000 + 1139650.000 + + + + + + + + + + + + + + 20191014 + + + + Abflussmessung + Aletschfluss + + + 2647012.000 + 1149114.000 + + + + + + + + + + + + 20191014 + + + + Regenmessung + Aletsch + + + 2647000.000 + 1148000.000 + + + + + + + + + + + + 20191014 + + + + Infrarotausgang + PLUVIO DWD-TYP + U.I.M + SN123456 + + + + + + + + + 20191014 + + + + Schwimmer + TASADA + FREY + SE33 + + + + + + + + + + 20191014 + + + + kontinuierlich + Ablauf Mai95 + m3/s + + + + + + + + + + 20191014 + + + + kontinuierlich + Fluss Mai95 + m3/s + + + + + + + + + + 20191014 + + + + kontinuierlich + Erfassung im Rahmen des GEP + Regen Mai95 + mm/min + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2001 + andere + 60 + 0.0000 + 19950501 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2002 + 60 + 0.0000 + 19950502 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2003 + 60 + 0.0000 + 19950503 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2004 + 60 + 0.0000 + 19950504 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2005 + 60 + 0.0000 + 19950505 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2006 + 60 + 0.0000 + 19950506 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2007 + 60 + 0.0000 + 19950507 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2008 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2009 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2010 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2011 + 60 + 0.0600 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2012 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2013 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2014 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2015 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2016 + 60 + 0.0800 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2017 + 60 + 0.1000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2018 + 60 + 0.1200 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2019 + 60 + 0.1700 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2020 + 60 + 0.1600 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2021 + 60 + 0.1000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2022 + 60 + 0.1000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2023 + 60 + 0.0700 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2024 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2025 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2026 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2027 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2028 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2029 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2030 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2031 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2032 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2033 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2034 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2035 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2036 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2037 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2038 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2039 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2040 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2041 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2042 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2043 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2044 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2045 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2046 + 60 + 0.0400 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2047 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2048 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2049 + 60 + 0.0600 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2050 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2051 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2052 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2053 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2054 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2055 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2056 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2057 + 60 + 0.0300 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2058 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2059 + 60 + 0.0000 + 19950508 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2060 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2061 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2062 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2063 + 60 + 0.0700 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2064 + 60 + 0.0600 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2065 + 60 + 0.0500 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2066 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2067 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2068 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2069 + 60 + 0.0500 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2070 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2071 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2072 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2073 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2074 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2075 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2076 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2077 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2078 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2079 + 60 + 0.0700 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2080 + 60 + 0.1000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2081 + 60 + 0.3000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2082 + 60 + 0.4300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2083 + 60 + 0.5000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2084 + 60 + 0.5600 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2085 + 60 + 0.4200 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2086 + 60 + 0.3100 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2087 + 60 + 0.2100 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2088 + 60 + 0.1400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2089 + 60 + 0.0800 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2090 + 60 + 0.0700 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2091 + 60 + 0.0500 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2092 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2093 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2094 + 60 + 0.0800 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2095 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2096 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2097 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2098 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2099 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2100 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2101 + 60 + 0.0700 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2102 + 60 + 0.0900 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2103 + 60 + 0.1100 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2104 + 60 + 0.0900 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2105 + 60 + 0.0600 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2106 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2107 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2108 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2109 + 60 + 0.0400 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2110 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2111 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2112 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2113 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2114 + 60 + 0.0500 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2115 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2116 + 60 + 0.0300 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2117 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2118 + 60 + 0.0000 + 19950509 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2119 + 60 + 0.0000 + 19950510 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2120 + 60 + 0.0000 + 19950511 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2121 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2122 + 60 + 0.0400 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2123 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2124 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2125 + 60 + 0.0300 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2126 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2127 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2128 + 60 + 0.0300 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2129 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2130 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2131 + 60 + 0.0400 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2132 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2133 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2134 + 60 + 0.0700 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2135 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2136 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2137 + 60 + 0.0600 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2138 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2139 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2140 + 60 + 0.0300 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2141 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2142 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2143 + 60 + 0.0400 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2144 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2145 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2146 + 60 + 0.0300 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2147 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2148 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2149 + 60 + 0.0400 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2150 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2151 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2152 + 60 + 0.0700 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2153 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2154 + 60 + 0.0000 + 19950512 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2155 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2156 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2157 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2158 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2159 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2160 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2161 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2162 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2163 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2164 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2165 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2166 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2167 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2168 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2169 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2170 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2171 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2172 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2173 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2174 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2175 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2176 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2177 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2178 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2179 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2180 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2181 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2182 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2183 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2184 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2185 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2186 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2187 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2188 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2189 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2190 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2191 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2192 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2193 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2194 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2195 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2196 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2197 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2198 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2199 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2200 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2201 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2202 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2203 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2204 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2205 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2206 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2207 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2208 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2209 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2210 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2211 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2212 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2213 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2214 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2215 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2216 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2217 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2218 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2219 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2220 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2221 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2222 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2223 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2224 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2225 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2226 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2227 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2228 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2229 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2230 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2231 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2232 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2233 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2234 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2235 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2236 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2237 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2238 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2239 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2240 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2241 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2242 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2243 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2244 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2245 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2246 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2247 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2248 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2249 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2250 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2251 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2252 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2253 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2254 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2255 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2256 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2257 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2258 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2259 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2260 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2261 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2262 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2263 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2264 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2265 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2266 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2267 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2268 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2269 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2270 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2271 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2272 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2273 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2274 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2275 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2276 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2277 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2278 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2279 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2280 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2281 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2282 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2283 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2284 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2285 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2286 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2287 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2288 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2289 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2290 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2291 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2292 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2293 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2294 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2295 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2296 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2297 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2298 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2299 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2300 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2301 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2302 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2303 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2304 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2305 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2306 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2307 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2308 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2309 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2310 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2311 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2312 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2313 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2314 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2315 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2316 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2317 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2318 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2319 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2320 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2321 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2322 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2323 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2324 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2325 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2326 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2327 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2328 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2329 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2330 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2331 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2332 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2333 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2334 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2335 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2336 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2337 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2338 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2339 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2340 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2341 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2342 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2343 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2344 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2345 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2346 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2347 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2348 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2349 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2350 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2351 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2352 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2353 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2354 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2355 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2356 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2357 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2358 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2359 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2360 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2361 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2362 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2363 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2364 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2365 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2366 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2367 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2368 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2369 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2370 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2371 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2372 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2373 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2374 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2375 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2376 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2377 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2378 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2379 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2380 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2381 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2382 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2383 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2384 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2385 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2386 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2387 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2388 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2389 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2390 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2391 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2392 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2393 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2394 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2395 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2396 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2397 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2398 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2399 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2400 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2401 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2402 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2403 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2404 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2405 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2406 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2407 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2408 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2409 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2410 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2411 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2412 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2413 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2414 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2415 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2416 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2417 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2418 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2419 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2420 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2421 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2422 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2423 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2424 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2425 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2426 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2427 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2428 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2429 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2430 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2431 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2432 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2433 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2434 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2435 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2436 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2437 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2438 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2439 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2440 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2441 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2442 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2443 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2444 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2445 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2446 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2447 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2448 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2449 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2450 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2451 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2452 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2453 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2454 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2455 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2456 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2457 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2458 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2459 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2460 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2461 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2462 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2463 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2464 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2465 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2466 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2467 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2468 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2469 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2470 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2471 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2472 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2473 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2474 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2475 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2476 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2477 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2478 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2479 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2480 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2481 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2482 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2483 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2484 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2485 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2486 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2487 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2488 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2489 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2490 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2491 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2492 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2493 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2494 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2495 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2496 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2497 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2498 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2499 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2500 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2501 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2502 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2503 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2504 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2505 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2506 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2507 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2508 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2509 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2510 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2511 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2512 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2513 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2514 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2515 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2516 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2517 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2518 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2519 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2520 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2521 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2522 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2523 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2524 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2525 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2526 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2527 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2528 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2529 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2530 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2531 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2532 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2533 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2534 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2535 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2536 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2537 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2538 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2539 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2540 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2541 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2542 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2543 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2544 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2545 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2546 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2547 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2548 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2549 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2550 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2551 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2552 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2553 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2554 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2555 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2556 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2557 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2558 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2559 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2560 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2561 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2562 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2563 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2564 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2565 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2566 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2567 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2568 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2569 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2570 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2571 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2572 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2573 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2574 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2575 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2576 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2577 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2578 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2579 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2580 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2581 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2582 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2583 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2584 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2585 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2586 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2587 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2588 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2589 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2590 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2591 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2592 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2593 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2594 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2595 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2596 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2597 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2598 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2599 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2600 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2601 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2602 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2603 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2604 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2605 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2606 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2607 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2608 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2609 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2610 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2611 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2612 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2613 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2614 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2615 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2616 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2617 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2618 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2619 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2620 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2621 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2622 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2623 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2624 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2625 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2626 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2627 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2628 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2629 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2630 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2631 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2632 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2633 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2634 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2635 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2636 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2637 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2638 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2639 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2640 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2641 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2642 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2643 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2644 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2645 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2646 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2647 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2648 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2649 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2650 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2651 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2652 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2653 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2654 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2655 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2656 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2657 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2658 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2659 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2660 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2661 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2662 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2663 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2664 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2665 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2666 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2667 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2668 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2669 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2670 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2671 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2672 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2673 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2674 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2675 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2676 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2677 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2678 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2679 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2680 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2681 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2682 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2683 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2684 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2685 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2686 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2687 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2688 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2689 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2690 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2691 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2692 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2693 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2694 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2695 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2696 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2697 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2698 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2699 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2700 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2701 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2702 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2703 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2704 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2705 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2706 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2707 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2708 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2709 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2710 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2711 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2712 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2713 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2714 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2715 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2716 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2717 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2718 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2719 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2720 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2721 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2722 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2723 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2724 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2725 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2726 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2727 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2728 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2729 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2730 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2731 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2732 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2733 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2734 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2735 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2736 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2737 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2738 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2739 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2740 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2741 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2742 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2743 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2744 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2745 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2746 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2747 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2748 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2749 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2750 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2751 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2752 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2753 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2754 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2755 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2756 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2757 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2758 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2759 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2760 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2761 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2762 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2763 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2764 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2765 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2766 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2767 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2768 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2769 + 60 + 0.1400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2770 + 60 + 0.1600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2771 + 60 + 0.1700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2772 + 60 + 0.1800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2773 + 60 + 0.1400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2774 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2775 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2776 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2777 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2778 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2779 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2780 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2781 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2782 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2783 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2784 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2785 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2786 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2787 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2788 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2789 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2790 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2791 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2792 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2793 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2794 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2795 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2796 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2797 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2798 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2799 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2800 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2801 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2802 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2803 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2804 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2805 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2806 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2807 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2808 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2809 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2810 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2811 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2812 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2813 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2814 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2815 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2816 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2817 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2818 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2819 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2820 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2821 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2822 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2823 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2824 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2825 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2826 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2827 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2828 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2829 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2830 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2831 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2832 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2833 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2834 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2835 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2836 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2837 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2838 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2839 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2840 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2841 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2842 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2843 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2844 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2845 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2846 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2847 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2848 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2849 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2850 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2851 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2852 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2853 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2854 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2855 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2856 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2857 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2858 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2859 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2860 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2861 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2862 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2863 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2864 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2865 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2866 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2867 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2868 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2869 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2870 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2871 + 60 + 0.1300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2872 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2873 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2874 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2875 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2876 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2877 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2878 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2879 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2880 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2881 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2882 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2883 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2884 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2885 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2886 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2887 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2888 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2889 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2890 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2891 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2892 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2893 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2894 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2895 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2896 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2897 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2898 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2899 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2900 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2901 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2902 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2903 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2904 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2905 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2906 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2907 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2908 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2909 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2910 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2911 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2912 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2913 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2914 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2915 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2916 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2917 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2918 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2919 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2920 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2921 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2922 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2923 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2924 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2925 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2926 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2927 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2928 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2929 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2930 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2931 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2932 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2933 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2934 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2935 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2936 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2937 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2938 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2939 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2940 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2941 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2942 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2943 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2944 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2945 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2946 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2947 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2948 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2949 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2950 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2951 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2952 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2953 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2954 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2955 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2956 + 60 + 0.1200 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2957 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2958 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2959 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2960 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2961 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2962 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2963 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2964 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2965 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2966 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2967 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2968 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2969 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2970 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2971 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2972 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2973 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2974 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2975 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2976 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2977 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2978 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2979 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2980 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2981 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2982 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2983 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2984 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2985 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2986 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2987 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2988 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2989 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2990 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2991 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2992 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2993 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2994 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2995 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2996 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2997 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2998 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR2999 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3000 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3001 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3002 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3003 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3004 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3005 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3006 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3007 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3008 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3009 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3010 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3011 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3012 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3013 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3014 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3015 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3016 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3017 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3018 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3019 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3020 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3021 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3022 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3023 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3024 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3025 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3026 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3027 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3028 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3029 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3030 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3031 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3032 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3033 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3034 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3035 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3036 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3037 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3038 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3039 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3040 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3041 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3042 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3043 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3044 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3045 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3046 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3047 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3048 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3049 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3050 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3051 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3052 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3053 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3054 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3055 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3056 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3057 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3058 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3059 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3060 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3061 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3062 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3063 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3064 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3065 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3066 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3067 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3068 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3069 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3070 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3071 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3072 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3073 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3074 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3075 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3076 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3077 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3078 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3079 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3080 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3081 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3082 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3083 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3084 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3085 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3086 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3087 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3088 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3089 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3090 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3091 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3092 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3093 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3094 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3095 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3096 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3097 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3098 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3099 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3100 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3101 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3102 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3103 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3104 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3105 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3106 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3107 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3108 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3109 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3110 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3111 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3112 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3113 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3114 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3115 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3116 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3117 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3118 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3119 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3120 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3121 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3122 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3123 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3124 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3125 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3126 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3127 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3128 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3129 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3130 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3131 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3132 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3133 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3134 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3135 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3136 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3137 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3138 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3139 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3140 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3141 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3142 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3143 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3144 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3145 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3146 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3147 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3148 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3149 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3150 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3151 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3152 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3153 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3154 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3155 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3156 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3157 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3158 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3159 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3160 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3161 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3162 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3163 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3164 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3165 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3166 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3167 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3168 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3169 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3170 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3171 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3172 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3173 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3174 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3175 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3176 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3177 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3178 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3179 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3180 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3181 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3182 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3183 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3184 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3185 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3186 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3187 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3188 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3189 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3190 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3191 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3192 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3193 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3194 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3195 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3196 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3197 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3198 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3199 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3200 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3201 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3202 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3203 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3204 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3205 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3206 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3207 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3208 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3209 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3210 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3211 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3212 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3213 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3214 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3215 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3216 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3217 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3218 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3219 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3220 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3221 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3222 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3223 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3224 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3225 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3226 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3227 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3228 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3229 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3230 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3231 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3232 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3233 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3234 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3235 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3236 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3237 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3238 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3239 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3240 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3241 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3242 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3243 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3244 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3245 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3246 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3247 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3248 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3249 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3250 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3251 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3252 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3253 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3254 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3255 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3256 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3257 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3258 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3259 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3260 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3261 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3262 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3263 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3264 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3265 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3266 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3267 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3268 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3269 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3270 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3271 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3272 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3273 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3274 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3275 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3276 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3277 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3278 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3279 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3280 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3281 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3282 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3283 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3284 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3285 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3286 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3287 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3288 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3289 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3290 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3291 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3292 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3293 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3294 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3295 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3296 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3297 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3298 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3299 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3300 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3301 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3302 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3303 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3304 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3305 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3306 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3307 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3308 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3309 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3310 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3311 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3312 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3313 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3314 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3315 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3316 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3317 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3318 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3319 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3320 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3321 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3322 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3323 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3324 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3325 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3326 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3327 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3328 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3329 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3330 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3331 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3332 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3333 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3334 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3335 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3336 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3337 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3338 + 60 + 0.0400 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3339 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3340 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3341 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3342 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3343 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3344 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3345 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3346 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3347 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3348 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3349 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3350 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3351 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3352 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3353 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3354 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3355 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3356 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3357 + 60 + 0.0600 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3358 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3359 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3360 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3361 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3362 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3363 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3364 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3365 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3366 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3367 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3368 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3369 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3370 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3371 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3372 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3373 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3374 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3375 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3376 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3377 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3378 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3379 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3380 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3381 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3382 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3383 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3384 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3385 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3386 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3387 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3388 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3389 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3390 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3391 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3392 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3393 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3394 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3395 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3396 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3397 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3398 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3399 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3400 + 60 + 0.0300 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3401 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3402 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3403 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3404 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3405 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3406 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3407 + 60 + 0.0700 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3408 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3409 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3410 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3411 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3412 + 60 + 0.1100 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3413 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3414 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3415 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3416 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3417 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3418 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3419 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3420 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3421 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3422 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3423 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3424 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3425 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3426 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3427 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3428 + 60 + 0.1000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3429 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3430 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3431 + 60 + 0.0800 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3432 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3433 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3434 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3435 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3436 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3437 + 60 + 0.0900 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3438 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3439 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3440 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3441 + 60 + 0.0500 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3442 + 60 + 0.0000 + 19950513 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3443 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3444 + 60 + 0.1000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3445 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3446 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3447 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3448 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3449 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3450 + 60 + 0.1000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3451 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3452 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3453 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3454 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3455 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3456 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3457 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3458 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3459 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3460 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3461 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3462 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3463 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3464 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3465 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3466 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3467 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3468 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3469 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3470 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3471 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3472 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3473 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3474 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3475 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3476 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3477 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3478 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3479 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3480 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3481 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3482 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3483 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3484 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3485 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3486 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3487 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3488 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3489 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3490 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3491 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3492 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3493 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3494 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3495 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3496 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3497 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3498 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3499 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3500 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3501 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3502 + 60 + 0.1000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3503 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3504 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3505 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3506 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3507 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3508 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3509 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3510 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3511 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3512 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3513 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3514 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3515 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3516 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3517 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3518 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3519 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3520 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3521 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3522 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3523 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3524 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3525 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3526 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3527 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3528 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3529 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3530 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3531 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3532 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3533 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3534 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3535 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3536 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3537 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3538 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3539 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3540 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3541 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3542 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3543 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3544 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3545 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3546 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3547 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3548 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3549 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3550 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3551 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3552 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3553 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3554 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3555 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3556 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3557 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3558 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3559 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3560 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3561 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3562 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3563 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3564 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3565 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3566 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3567 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3568 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3569 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3570 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3571 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3572 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3573 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3574 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3575 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3576 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3577 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3578 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3579 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3580 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3581 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3582 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3583 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3584 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3585 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3586 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3587 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3588 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3589 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3590 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3591 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3592 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3593 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3594 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3595 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3596 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3597 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3598 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3599 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3600 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3601 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3602 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3603 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3604 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3605 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3606 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3607 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3608 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3609 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3610 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3611 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3612 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3613 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3614 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3615 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3616 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3617 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3618 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3619 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3620 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3621 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3622 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3623 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3624 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3625 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3626 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3627 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3628 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3629 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3630 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3631 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3632 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3633 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3634 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3635 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3636 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3637 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3638 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3639 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3640 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3641 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3642 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3643 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3644 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3645 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3646 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3647 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3648 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3649 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3650 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3651 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3652 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3653 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3654 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3655 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3656 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3657 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3658 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3659 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3660 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3661 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3662 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3663 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3664 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3665 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3666 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3667 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3668 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3669 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3670 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3671 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3672 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3673 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3674 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3675 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3676 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3677 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3678 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3679 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3680 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3681 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3682 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3683 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3684 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3685 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3686 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3687 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3688 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3689 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3690 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3691 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3692 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3693 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3694 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3695 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3696 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3697 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3698 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3699 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3700 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3701 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3702 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3703 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3704 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3705 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3706 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3707 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3708 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3709 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3710 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3711 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3712 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3713 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3714 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3715 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3716 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3717 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3718 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3719 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3720 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3721 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3722 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3723 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3724 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3725 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3726 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3727 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3728 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3729 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3730 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3731 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3732 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3733 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3734 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3735 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3736 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3737 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3738 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3739 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3740 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3741 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3742 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3743 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3744 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3745 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3746 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3747 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3748 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3749 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3750 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3751 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3752 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3753 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3754 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3755 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3756 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3757 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3758 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3759 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3760 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3761 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3762 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3763 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3764 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3765 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3766 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3767 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3768 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3769 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3770 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3771 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3772 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3773 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3774 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3775 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3776 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3777 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3778 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3779 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3780 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3781 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3782 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3783 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3784 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3785 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3786 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3787 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3788 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3789 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3790 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3791 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3792 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3793 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3794 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3795 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3796 + 60 + 0.0800 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3797 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3798 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3799 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3800 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3801 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3802 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3803 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3804 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3805 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3806 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3807 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3808 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3809 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3810 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3811 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3812 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3813 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3814 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3815 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3816 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3817 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3818 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3819 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3820 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3821 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3822 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3823 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3824 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3825 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3826 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3827 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3828 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3829 + 60 + 0.0900 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3830 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3831 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3832 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3833 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3834 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3835 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3836 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3837 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3838 + 60 + 0.1000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3839 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3840 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3841 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3842 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3843 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3844 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3845 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3846 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3847 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3848 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3849 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3850 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3851 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3852 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3853 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3854 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3855 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3856 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3857 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3858 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3859 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3860 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3861 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3862 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3863 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3864 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3865 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3866 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3867 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3868 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3869 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3870 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3871 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3872 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3873 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3874 + 60 + 0.0500 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3875 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3876 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3877 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3878 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3879 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3880 + 60 + 0.0600 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3881 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3882 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3883 + 60 + 0.0700 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3884 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3885 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3886 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3887 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3888 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3889 + 60 + 0.0300 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3890 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3891 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3892 + 60 + 0.0400 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3893 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3894 + 60 + 0.0000 + 19950514 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3895 + 60 + 0.0000 + 19950515 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3896 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3897 + 60 + 0.0600 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3898 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3899 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3900 + 60 + 0.0600 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3901 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3902 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3903 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3904 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3905 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3906 + 60 + 0.0600 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3907 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3908 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3909 + 60 + 0.0400 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3910 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3911 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3912 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3913 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3914 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3915 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3916 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3917 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3918 + 60 + 0.0800 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3919 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3920 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3921 + 60 + 0.0700 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3922 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3923 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3924 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3925 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3926 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3927 + 60 + 0.0900 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3928 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3929 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3930 + 60 + 0.0900 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3931 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3932 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3933 + 60 + 0.0700 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3934 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3935 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3936 + 60 + 0.0700 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3937 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3938 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3939 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3940 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3941 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3942 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3943 + 60 + 0.0900 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3944 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3945 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3946 + 60 + 0.0900 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3947 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3948 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3949 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3950 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3951 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3952 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3953 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3954 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3955 + 60 + 0.1200 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3956 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3957 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3958 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3959 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3960 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3961 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3962 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3963 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3964 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3965 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3966 + 60 + 0.0900 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3967 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3968 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3969 + 60 + 0.0700 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3970 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3971 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3972 + 60 + 0.0600 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3973 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3974 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3975 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3976 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3977 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3978 + 60 + 0.0400 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3979 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3980 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3981 + 60 + 0.0300 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3982 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3983 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3984 + 60 + 0.0400 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3985 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3986 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3987 + 60 + 0.0400 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3988 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3989 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3990 + 60 + 0.0400 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3991 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3992 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3993 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3994 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3995 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3996 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3997 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3998 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR3999 + 60 + 0.0900 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4000 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4001 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4002 + 60 + 0.1000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4003 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4004 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4005 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4006 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4007 + 60 + 0.0500 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4008 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4009 + 60 + 0.0000 + 19950516 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4010 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4011 + 60 + 0.0400 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4012 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4013 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4014 + 60 + 0.0600 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4015 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4016 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4017 + 60 + 0.0500 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4018 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4019 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4020 + 60 + 0.0400 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4021 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4022 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4023 + 60 + 0.0500 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4024 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4025 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4026 + 60 + 0.0800 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4027 + 60 + 0.0300 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4028 + 60 + 0.0300 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4029 + 60 + 0.0300 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4030 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4031 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4032 + 60 + 0.0500 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4033 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4034 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4035 + 60 + 0.0500 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4036 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4037 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4038 + 60 + 0.0900 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4039 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4040 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4041 + 60 + 0.0400 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4042 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4043 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4044 + 60 + 0.0700 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4045 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4046 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4047 + 60 + 0.0300 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4048 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4049 + 60 + 0.0000 + 19950517 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4050 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4051 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4052 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4053 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4054 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4055 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4056 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4057 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4058 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4059 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4060 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4061 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4062 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4063 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4064 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4065 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4066 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4067 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4068 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4069 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4070 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4071 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4072 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4073 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4074 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4075 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4076 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4077 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4078 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4079 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4080 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4081 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4082 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4083 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4084 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4085 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4086 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4087 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4088 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4089 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4090 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4091 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4092 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4093 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4094 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4095 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4096 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4097 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4098 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4099 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4100 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4101 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4102 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4103 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4104 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4105 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4106 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4107 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4108 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4109 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4110 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4111 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4112 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4113 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4114 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4115 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4116 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4117 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4118 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4119 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4120 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4121 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4122 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4123 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4124 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4125 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4126 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4127 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4128 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4129 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4130 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4131 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4132 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4133 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4134 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4135 + 60 + 0.0900 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4136 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4137 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4138 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4139 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4140 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4141 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4142 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4143 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4144 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4145 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4146 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4147 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4148 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4149 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4150 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4151 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4152 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4153 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4154 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4155 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4156 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4157 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4158 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4159 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4160 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4161 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4162 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4163 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4164 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4165 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4166 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4167 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4168 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4169 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4170 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4171 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4172 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4173 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4174 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4175 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4176 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4177 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4178 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4179 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4180 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4181 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4182 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4183 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4184 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4185 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4186 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4187 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4188 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4189 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4190 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4191 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4192 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4193 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4194 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4195 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4196 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4197 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4198 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4199 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4200 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4201 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4202 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4203 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4204 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4205 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4206 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4207 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4208 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4209 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4210 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4211 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4212 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4213 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4214 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4215 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4216 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4217 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4218 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4219 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4220 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4221 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4222 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4223 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4224 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4225 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4226 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4227 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4228 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4229 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4230 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4231 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4232 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4233 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4234 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4235 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4236 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4237 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4238 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4239 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4240 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4241 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4242 + 60 + 0.0900 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4243 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4244 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4245 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4246 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4247 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4248 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4249 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4250 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4251 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4252 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4253 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4254 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4255 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4256 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4257 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4258 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4259 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4260 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4261 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4262 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4263 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4264 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4265 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4266 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4267 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4268 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4269 + 60 + 0.1500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4270 + 60 + 0.2100 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4271 + 60 + 0.2900 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4272 + 60 + 0.2300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4273 + 60 + 0.1800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4274 + 60 + 0.1500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4275 + 60 + 0.1300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4276 + 60 + 0.1800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4277 + 60 + 0.2000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4278 + 60 + 0.2100 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4279 + 60 + 0.1600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4280 + 60 + 0.1400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4281 + 60 + 0.0900 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4282 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4283 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4284 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4285 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4286 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4287 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4288 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4289 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4290 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4291 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4292 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4293 + 60 + 0.0900 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4294 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4295 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4296 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4297 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4298 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4299 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4300 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4301 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4302 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4303 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4304 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4305 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4306 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4307 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4308 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4309 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4310 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4311 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4312 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4313 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4314 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4315 + 60 + 0.1100 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4316 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4317 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4318 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4319 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4320 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4321 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4322 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4323 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4324 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4325 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4326 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4327 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4328 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4329 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4330 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4331 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4332 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4333 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4334 + 60 + 0.0900 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4335 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4336 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4337 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4338 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4339 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4340 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4341 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4342 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4343 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4344 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4345 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4346 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4347 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4348 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4349 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4350 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4351 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4352 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4353 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4354 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4355 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4356 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4357 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4358 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4359 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4360 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4361 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4362 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4363 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4364 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4365 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4366 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4367 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4368 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4369 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4370 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4371 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4372 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4373 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4374 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4375 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4376 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4377 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4378 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4379 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4380 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4381 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4382 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4383 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4384 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4385 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4386 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4387 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4388 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4389 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4390 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4391 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4392 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4393 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4394 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4395 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4396 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4397 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4398 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4399 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4400 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4401 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4402 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4403 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4404 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4405 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4406 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4407 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4408 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4409 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4410 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4411 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4412 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4413 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4414 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4415 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4416 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4417 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4418 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4419 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4420 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4421 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4422 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4423 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4424 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4425 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4426 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4427 + 60 + 0.0800 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4428 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4429 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4430 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4431 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4432 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4433 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4434 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4435 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4436 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4437 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4438 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4439 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4440 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4441 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4442 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4443 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4444 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4445 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4446 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4447 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4448 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4449 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4450 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4451 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4452 + 60 + 0.1000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4453 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4454 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4455 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4456 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4457 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4458 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4459 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4460 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4461 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4462 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4463 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4464 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4465 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4466 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4467 + 60 + 0.0300 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4468 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4469 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4470 + 60 + 0.0600 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4471 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4472 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4473 + 60 + 0.0700 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4474 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4475 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4476 + 60 + 0.0400 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4477 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4478 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4479 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4480 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4481 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4482 + 60 + 0.0500 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4483 + 60 + 0.0000 + 19950518 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4484 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4485 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4486 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4487 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4488 + 60 + 0.0400 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4489 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4490 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4491 + 60 + 0.0400 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4492 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4493 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4494 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4495 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4496 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4497 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4498 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4499 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4500 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4501 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4502 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4503 + 60 + 0.0800 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4504 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4505 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4506 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4507 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4508 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4509 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4510 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4511 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4512 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4513 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4514 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4515 + 60 + 0.0900 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4516 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4517 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4518 + 60 + 0.0900 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4519 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4520 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4521 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4522 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4523 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4524 + 60 + 0.0400 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4525 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4526 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4527 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4528 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4529 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4530 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4531 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4532 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4533 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4534 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4535 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4536 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4537 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4538 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4539 + 60 + 0.0400 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4540 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4541 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4542 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4543 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4544 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4545 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4546 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4547 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4548 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4549 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4550 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4551 + 60 + 0.0300 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4552 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4553 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4554 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4555 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4556 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4557 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4558 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4559 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4560 + 60 + 0.1100 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4561 + 60 + 0.1000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4562 + 60 + 0.1700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4563 + 60 + 0.2200 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4564 + 60 + 0.2100 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4565 + 60 + 0.1900 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4566 + 60 + 0.1400 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4567 + 60 + 0.0900 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4568 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4569 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4570 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4571 + 60 + 0.0900 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4572 + 60 + 0.0900 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4573 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4574 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4575 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4576 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4577 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4578 + 60 + 0.0800 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4579 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4580 + 60 + 0.0700 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4581 + 60 + 0.0600 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4582 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4583 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4584 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4585 + 60 + 0.0500 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4586 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4587 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4588 + 60 + 0.0400 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4589 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4590 + 60 + 0.0000 + 19950519 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4591 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4592 + 60 + 0.0800 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4593 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4594 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4595 + 60 + 0.0400 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4596 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4597 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4598 + 60 + 0.0700 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4599 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4600 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4601 + 60 + 0.0400 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4602 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4603 + 60 + 0.0000 + 19950520 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4604 + 60 + 0.0000 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4605 + 60 + 0.0500 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4606 + 60 + 0.0000 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4607 + 60 + 0.0000 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4608 + 60 + 0.0400 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4609 + 60 + 0.0000 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4610 + 60 + 0.0000 + 19950521 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4611 + 60 + 0.0000 + 19950522 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4612 + 60 + 0.0000 + 19950523 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4613 + 60 + 0.0000 + 19950524 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4614 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4615 + 60 + 0.0300 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4616 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4617 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4618 + 60 + 0.0400 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4619 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4620 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4621 + 60 + 0.0500 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4622 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4623 + 60 + 0.0000 + 19950525 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4624 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4625 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4626 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4627 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4628 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4629 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4630 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4631 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4632 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4633 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4634 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4635 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4636 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4637 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4638 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4639 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4640 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4641 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4642 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4643 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4644 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4645 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4646 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4647 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4648 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4649 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4650 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4651 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4652 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4653 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4654 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4655 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4656 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4657 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4658 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4659 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4660 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4661 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4662 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4663 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4664 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4665 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4666 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4667 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4668 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4669 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4670 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4671 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4672 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4673 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4674 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4675 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4676 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4677 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4678 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4679 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4680 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4681 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4682 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4683 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4684 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4685 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4686 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4687 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4688 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4689 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4690 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4691 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4692 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4693 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4694 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4695 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4696 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4697 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4698 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4699 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4700 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4701 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4702 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4703 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4704 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4705 + 60 + 0.1000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4706 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4707 + 60 + 0.1000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4708 + 60 + 0.1000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4709 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4710 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4711 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4712 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4713 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4714 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4715 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4716 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4717 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4718 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4719 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4720 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4721 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4722 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4723 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4724 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4725 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4726 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4727 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4728 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4729 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4730 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4731 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4732 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4733 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4734 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4735 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4736 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4737 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4738 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4739 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4740 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4741 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4742 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4743 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4744 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4745 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4746 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4747 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4748 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4749 + 60 + 0.1000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4750 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4751 + 60 + 0.0800 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4752 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4753 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4754 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4755 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4756 + 60 + 0.0600 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4757 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4758 + 60 + 0.0400 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4759 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4760 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4761 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4762 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4763 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4764 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4765 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4766 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4767 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4768 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4769 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4770 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4771 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4772 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4773 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4774 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4775 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4776 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4777 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4778 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4779 + 60 + 0.0900 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4780 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4781 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4782 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4783 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4784 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4785 + 60 + 0.0700 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4786 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4787 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4788 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4789 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4790 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4791 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4792 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4793 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4794 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4795 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4796 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4797 + 60 + 0.0500 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4798 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4799 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4800 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4801 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4802 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4803 + 60 + 0.0300 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4804 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4805 + 60 + 0.0000 + 19950526 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4806 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4807 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4808 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4809 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4810 + 60 + 0.0400 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4811 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4812 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4813 + 60 + 0.0900 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4814 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4815 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4816 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4817 + 60 + 0.0400 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4818 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4819 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4820 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4821 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4822 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4823 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4824 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4825 + 60 + 0.1100 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4826 + 60 + 0.0600 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4827 + 60 + 0.0600 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4828 + 60 + 0.0800 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4829 + 60 + 0.0700 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4830 + 60 + 0.0500 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4831 + 60 + 0.0500 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4832 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4833 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4834 + 60 + 0.0300 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4835 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4836 + 60 + 0.0000 + 19950527 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4837 + 60 + 0.0000 + 19950528 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4838 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4839 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4840 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4841 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4842 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4843 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4844 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4845 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4846 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4847 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4848 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4849 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4850 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4851 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4852 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4853 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4854 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4855 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4856 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4857 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4858 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4859 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4860 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4861 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4862 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4863 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4864 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4865 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4866 + 60 + 0.0900 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4867 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4868 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4869 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4870 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4871 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4872 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4873 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4874 + 60 + 0.0900 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4875 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4876 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4877 + 60 + 0.0900 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4878 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4879 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4880 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4881 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4882 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4883 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4884 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4885 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4886 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4887 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4888 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4889 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4890 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4891 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4892 + 60 + 0.0900 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4893 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4894 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4895 + 60 + 0.0900 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4896 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4897 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4898 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4899 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4900 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4901 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4902 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4903 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4904 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4905 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4906 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4907 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4908 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4909 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4910 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4911 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4912 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4913 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4914 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4915 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4916 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4917 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4918 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4919 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4920 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4921 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4922 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4923 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4924 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4925 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4926 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4927 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4928 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4929 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4930 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4931 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4932 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4933 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4934 + 60 + 0.1000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4935 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4936 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4937 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4938 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4939 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4940 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4941 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4942 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4943 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4944 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4945 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4946 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4947 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4948 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4949 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4950 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4951 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4952 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4953 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4954 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4955 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4956 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4957 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4958 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4959 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4960 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4961 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4962 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4963 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4964 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4965 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4966 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4967 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4968 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4969 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4970 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4971 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4972 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4973 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4974 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4975 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4976 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4977 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4978 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4979 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4980 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4981 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4982 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4983 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4984 + 60 + 0.0600 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4985 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4986 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4987 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4988 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4989 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4990 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4991 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4992 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4993 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4994 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4995 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4996 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4997 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4998 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR4999 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5000 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5001 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5002 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5003 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5004 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5005 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5006 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5007 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5008 + 60 + 0.1000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5009 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5010 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5011 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5012 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5013 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5014 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5015 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5016 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5017 + 60 + 0.1100 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5018 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5019 + 60 + 0.0500 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5020 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5021 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5022 + 60 + 0.0700 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5023 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5024 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5025 + 60 + 0.0400 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5026 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5027 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5028 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5029 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5030 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5031 + 60 + 0.0300 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5032 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5033 + 60 + 0.0000 + 19950529 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5034 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5035 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5036 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5037 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5038 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5039 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5040 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5041 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5042 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5043 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5044 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5045 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5046 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5047 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5048 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5049 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5050 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5051 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5052 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5053 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5054 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5055 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5056 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5057 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5058 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5059 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5060 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5061 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5062 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5063 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5064 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5065 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5066 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5067 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5068 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5069 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5070 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5071 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5072 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5073 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5074 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5075 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5076 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5077 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5078 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5079 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5080 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5081 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5082 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5083 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5084 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5085 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5086 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5087 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5088 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5089 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5090 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5091 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5092 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5093 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5094 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5095 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5096 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5097 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5098 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5099 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5100 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5101 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5102 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5103 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5104 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5105 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5106 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5107 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5108 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5109 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5110 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5111 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5112 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5113 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5114 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5115 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5116 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5117 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5118 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5119 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5120 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5121 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5122 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5123 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5124 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5125 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5126 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5127 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5128 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5129 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5130 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5131 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5132 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5133 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5134 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5135 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5136 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5137 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5138 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5139 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5140 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5141 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5142 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5143 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5144 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5145 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5146 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5147 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5148 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5149 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5150 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5151 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5152 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5153 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5154 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5155 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5156 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5157 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5158 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5159 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5160 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5161 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5162 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5163 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5164 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5165 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5166 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5167 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5168 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5169 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5170 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5171 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5172 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5173 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5174 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5175 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5176 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5177 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5178 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5179 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5180 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5181 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5182 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5183 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5184 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5185 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5186 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5187 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5188 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5189 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5190 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5191 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5192 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5193 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5194 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5195 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5196 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5197 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5198 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5199 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5200 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5201 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5202 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5203 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5204 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5205 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5206 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5207 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5208 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5209 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5210 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5211 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5212 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5213 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5214 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5215 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5216 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5217 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5218 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5219 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5220 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5221 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5222 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5223 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5224 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5225 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5226 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5227 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5228 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5229 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5230 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5231 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5232 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5233 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5234 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5235 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5236 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5237 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5238 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5239 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5240 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5241 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5242 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5243 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5244 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5245 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5246 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5247 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5248 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5249 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5250 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5251 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5252 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5253 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5254 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5255 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5256 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5257 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5258 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5259 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5260 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5261 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5262 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5263 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5264 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5265 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5266 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5267 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5268 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5269 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5270 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5271 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5272 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5273 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5274 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5275 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5276 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5277 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5278 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5279 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5280 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5281 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5282 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5283 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5284 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5285 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5286 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5287 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5288 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5289 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5290 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5291 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5292 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5293 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5294 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5295 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5296 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5297 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5298 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5299 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5300 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5301 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5302 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5303 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5304 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5305 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5306 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5307 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5308 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5309 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5310 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5311 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5312 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5313 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5314 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5315 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5316 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5317 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5318 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5319 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5320 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5321 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5322 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5323 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5324 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5325 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5326 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5327 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5328 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5329 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5330 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5331 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5332 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5333 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5334 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5335 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5336 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5337 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5338 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5339 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5340 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5341 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5342 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5343 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5344 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5345 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5346 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5347 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5348 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5349 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5350 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5351 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5352 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5353 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5354 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5355 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5356 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5357 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5358 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5359 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5360 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5361 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5362 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5363 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5364 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5365 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5366 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5367 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5368 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5369 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5370 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5371 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5372 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5373 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5374 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5375 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5376 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5377 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5378 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5379 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5380 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5381 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5382 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5383 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5384 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5385 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5386 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5387 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5388 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5389 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5390 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5391 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5392 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5393 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5394 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5395 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5396 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5397 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5398 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5399 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5400 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5401 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5402 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5403 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5404 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5405 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5406 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5407 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5408 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5409 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5410 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5411 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5412 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5413 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5414 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5415 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5416 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5417 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5418 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5419 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5420 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5421 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5422 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5423 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5424 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5425 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5426 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5427 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5428 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5429 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5430 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5431 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5432 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5433 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5434 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5435 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5436 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5437 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5438 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5439 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5440 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5441 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5442 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5443 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5444 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5445 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5446 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5447 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5448 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5449 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5450 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5451 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5452 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5453 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5454 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5455 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5456 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5457 + 60 + 0.1500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5458 + 60 + 0.1700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5459 + 60 + 0.1900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5460 + 60 + 0.1800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5461 + 60 + 0.1800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5462 + 60 + 0.1800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5463 + 60 + 0.2100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5464 + 60 + 0.2300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5465 + 60 + 0.2400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5466 + 60 + 0.2200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5467 + 60 + 0.1700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5468 + 60 + 0.1500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5469 + 60 + 0.1500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5470 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5471 + 60 + 0.1600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5472 + 60 + 0.1700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5473 + 60 + 0.1700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5474 + 60 + 0.2000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5475 + 60 + 0.2200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5476 + 60 + 0.2300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5477 + 60 + 0.2400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5478 + 60 + 0.2400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5479 + 60 + 0.2200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5480 + 60 + 0.2000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5481 + 60 + 0.1900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5482 + 60 + 0.1800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5483 + 60 + 0.1800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5484 + 60 + 0.1800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5485 + 60 + 0.1700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5486 + 60 + 0.1700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5487 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5488 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5489 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5490 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5491 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5492 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5493 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5494 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5495 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5496 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5497 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5498 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5499 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5500 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5501 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5502 + 60 + 0.1600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5503 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5504 + 60 + 0.1500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5505 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5506 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5507 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5508 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5509 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5510 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5511 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5512 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5513 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5514 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5515 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5516 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5517 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5518 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5519 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5520 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5521 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5522 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5523 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5524 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5525 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5526 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5527 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5528 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5529 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5530 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5531 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5532 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5533 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5534 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5535 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5536 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5537 + 60 + 0.1300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5538 + 60 + 0.1400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5539 + 60 + 0.1300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5540 + 60 + 0.1300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5541 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5542 + 60 + 0.1100 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5543 + 60 + 0.1200 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5544 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5545 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5546 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5547 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5548 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5549 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5550 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5551 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5552 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5553 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5554 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5555 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5556 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5557 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5558 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5559 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5560 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5561 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5562 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5563 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5564 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5565 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5566 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5567 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5568 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5569 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5570 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5571 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5572 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5573 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5574 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5575 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5576 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5577 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5578 + 60 + 0.0800 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5579 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5580 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5581 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5582 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5583 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5584 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5585 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5586 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5587 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5588 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5589 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5590 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5591 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5592 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5593 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5594 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5595 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5596 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5597 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5598 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5599 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5600 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5601 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5602 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5603 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5604 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5605 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5606 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5607 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5608 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5609 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5610 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5611 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5612 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5613 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5614 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5615 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5616 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5617 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5618 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5619 + 60 + 0.1000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5620 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5621 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5622 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5623 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5624 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5625 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5626 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5627 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5628 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5629 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5630 + 60 + 0.0600 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5631 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5632 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5633 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5634 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5635 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5636 + 60 + 0.0900 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5637 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5638 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5639 + 60 + 0.0400 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5640 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5641 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5642 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5643 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5644 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5645 + 60 + 0.0300 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5646 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5647 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5648 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5649 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5650 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5651 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5652 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5653 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5654 + 60 + 0.0700 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5655 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5656 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5657 + 60 + 0.0500 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5658 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5659 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5660 + 60 + 0.0000 + 19950530 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5661 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5662 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5663 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5664 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5665 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5666 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5667 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5668 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5669 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5670 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5671 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5672 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5673 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5674 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5675 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5676 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5677 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5678 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5679 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5680 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5681 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5682 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5683 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5684 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5685 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5686 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5687 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5688 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5689 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5690 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5691 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5692 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5693 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5694 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5695 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5696 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5697 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5698 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5699 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5700 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5701 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5702 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5703 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5704 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5705 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5706 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5707 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5708 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5709 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5710 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5711 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5712 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5713 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5714 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5715 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5716 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5717 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5718 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5719 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5720 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5721 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5722 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5723 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5724 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5725 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5726 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5727 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5728 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5729 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5730 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5731 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5732 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5733 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5734 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5735 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5736 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5737 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5738 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5739 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5740 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5741 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5742 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5743 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5744 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5745 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5746 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5747 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5748 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5749 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5750 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5751 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5752 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5753 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5754 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5755 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5756 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5757 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5758 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5759 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5760 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5761 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5762 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5763 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5764 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5765 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5766 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5767 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5768 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5769 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5770 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5771 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5772 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5773 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5774 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5775 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5776 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5777 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5778 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5779 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5780 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5781 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5782 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5783 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5784 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5785 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5786 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5787 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5788 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5789 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5790 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5791 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5792 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5793 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5794 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5795 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5796 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5797 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5798 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5799 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5800 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5801 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5802 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5803 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5804 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5805 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5806 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5807 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5808 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5809 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5810 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5811 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5812 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5813 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5814 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5815 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5816 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5817 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5818 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5819 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5820 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5821 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5822 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5823 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5824 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5825 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5826 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5827 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5828 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5829 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5830 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5831 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5832 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5833 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5834 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5835 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5836 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5837 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5838 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5839 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5840 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5841 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5842 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5843 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5844 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5845 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5846 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5847 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5848 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5849 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5850 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5851 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5852 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5853 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5854 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5855 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5856 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5857 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5858 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5859 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5860 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5861 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5862 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5863 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5864 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5865 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5866 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5867 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5868 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5869 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5870 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5871 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5872 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5873 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5874 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5875 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5876 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5877 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5878 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5879 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5880 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5881 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5882 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5883 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5884 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5885 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5886 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5887 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5888 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5889 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5890 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5891 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5892 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5893 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5894 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5895 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5896 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5897 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5898 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5899 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5900 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5901 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5902 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5903 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5904 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5905 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5906 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5907 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5908 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5909 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5910 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5911 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5912 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5913 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5914 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5915 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5916 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5917 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5918 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5919 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5920 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5921 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5922 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5923 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5924 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5925 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5926 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5927 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5928 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5929 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5930 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5931 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5932 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5933 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5934 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5935 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5936 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5937 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5938 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5939 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5940 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5941 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5942 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5943 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5944 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5945 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5946 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5947 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5948 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5949 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5950 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5951 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5952 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5953 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5954 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5955 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5956 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5957 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5958 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5959 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5960 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5961 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5962 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5963 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5964 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5965 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5966 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5967 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5968 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5969 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5970 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5971 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5972 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5973 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5974 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5975 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5976 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5977 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5978 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5979 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5980 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5981 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5982 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5983 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5984 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5985 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5986 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5987 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5988 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5989 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5990 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5991 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5992 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5993 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5994 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5995 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5996 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5997 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5998 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR5999 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6000 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6001 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6002 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6003 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6004 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6005 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6006 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6007 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6008 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6009 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6010 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6011 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6012 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6013 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6014 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6015 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6016 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6017 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6018 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6019 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6020 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6021 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6022 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6023 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6024 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6025 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6026 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6027 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6028 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6029 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6030 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6031 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6032 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6033 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6034 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6035 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6036 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6037 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6038 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6039 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6040 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6041 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6042 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6043 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6044 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6045 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6046 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6047 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6048 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6049 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6050 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6051 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6052 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6053 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6054 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6055 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6056 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6057 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6058 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6059 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6060 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6061 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6062 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6063 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6064 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6065 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6066 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6067 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6068 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6069 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6070 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6071 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6072 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6073 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6074 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6075 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6076 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6077 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6078 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6079 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6080 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6081 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6082 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6083 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6084 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6085 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6086 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6087 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6088 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6089 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6090 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6091 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6092 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6093 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6094 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6095 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6096 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6097 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6098 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6099 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6100 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6101 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6102 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6103 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6104 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6105 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6106 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6107 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6108 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6109 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6110 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6111 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6112 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6113 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6114 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6115 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6116 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6117 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6118 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6119 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6120 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6121 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6122 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6123 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6124 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6125 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6126 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6127 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6128 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6129 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6130 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6131 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6132 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6133 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6134 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6135 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6136 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6137 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6138 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6139 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6140 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6141 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6142 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6143 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6144 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6145 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6146 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6147 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6148 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6149 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6150 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6151 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6152 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6153 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6154 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6155 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6156 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6157 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6158 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6159 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6160 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6161 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6162 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6163 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6164 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6165 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6166 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6167 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6168 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6169 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6170 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6171 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6172 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6173 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6174 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6175 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6176 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6177 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6178 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6179 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6180 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6181 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6182 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6183 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6184 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6185 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6186 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6187 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6188 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6189 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6190 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6191 + 60 + 0.1000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6192 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6193 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6194 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6195 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6196 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6197 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6198 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6199 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6200 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6201 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6202 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6203 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6204 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6205 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6206 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6207 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6208 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6209 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6210 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6211 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6212 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6213 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6214 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6215 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6216 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6217 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6218 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6219 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6220 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6221 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6222 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6223 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6224 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6225 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6226 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6227 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6228 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6229 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6230 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6231 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6232 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6233 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6234 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6235 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6236 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6237 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6238 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6239 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6240 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6241 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6242 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6243 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6244 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6245 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6246 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6247 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6248 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6249 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6250 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6251 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6252 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6253 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6254 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6255 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6256 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6257 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6258 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6259 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6260 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6261 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6262 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6263 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6264 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6265 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6266 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6267 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6268 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6269 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6270 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6271 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6272 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6273 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6274 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6275 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6276 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6277 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6278 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6279 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6280 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6281 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6282 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6283 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6284 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6285 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6286 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6287 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6288 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6289 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6290 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6291 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6292 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6293 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6294 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6295 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6296 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6297 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6298 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6299 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6300 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6301 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6302 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6303 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6304 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6305 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6306 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6307 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6308 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6309 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6310 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6311 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6312 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6313 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6314 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6315 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6316 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6317 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6318 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6319 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6320 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6321 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6322 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6323 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6324 + 60 + 0.0900 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6325 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6326 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6327 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6328 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6329 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6330 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6331 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6332 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6333 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6334 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6335 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6336 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6337 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6338 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6339 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6340 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6341 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6342 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6343 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6344 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6345 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6346 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6347 + 60 + 0.0600 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6348 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6349 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6350 + 60 + 0.0700 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6351 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6352 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6353 + 60 + 0.0800 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6354 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6355 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6356 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6357 + 60 + 0.0500 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6358 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6359 + 60 + 0.0400 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6360 + 60 + 0.0300 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6361 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6362 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + jährliche Messungen + MR6363 + 60 + 0.0000 + 19950531 + + + + + + + + + + + 20191014 + + + + ES1063 + Mischsystem + + + + + + 2646871.998 + 1143979.374 + + + 2646759.459 + 1143730.604 + + + 2646469.227 + 1143475.911 + + + 2645942.071 + 1143943.836 + + + 2646125.687 + 1144269.606 + + + 2646534.381 + 1144245.914 + + + 2646871.998 + 1143979.374 + + + + + + + + + + + + + + 20191014 + + + + ES1064 + Trennsystem + + + + + + 2642368.604 + 1148612.432 + + + 2642474.013 + 1148190.795 + + + 2642078.728 + 1147927.272 + + + 2642368.604 + 1147821.863 + + + 2641103.693 + 1147057.645 + + + 2640471.237 + 1147057.645 + + + 2640102.305 + 1147558.339 + + + 2640471.237 + 1148190.795 + + + 2641024.636 + 1148243.500 + + + 2642368.604 + 1148612.432 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + TF1272 + notwendig + + 200 + + + + + + + + + 20191014 + + + + dringend reparieren + EF9 + notwendig + + Leiter + + + + + + + + + 20191014 + + + + EF15 + nicht_notwendig + + Steigeisen + + + + + + + + + 20191014 + + + + EF24 + nicht_notwendig + + Leiter + + + + + + + + + 20191014 + + + + EF28 + unbekannt + + Steigeisen + + + + + + + + + 20191014 + + + + EF128 + nicht_notwendig + + Drucktuere + + + + + + + + + 20191014 + + + + EF1004 + nicht_notwendig + + Leiter + + + + + + + + + 20191014 + + + + TR1270 + nicht_notwendig + + Zementmoertel + + + + + + + + + 20191014 + + + + TR1271 + notwendig + + Zementmoertel + + + + + + + + + 20191014 + + + + FB.1 + notwendig + + rund + 600 + nicht_entlueftet + Von Roll AG + + + 2647996.000 + 1143426.868 + + + unbekannt + Guss + nicht_vorhanden + unbekannt + + + + + + + + + 20191014 + + + + FB.2 + notwendig + + rund + 600 + nicht_entlueftet + Von Roll AG + + + 2647994.200 + 1143422.000 + + + unbekannt + Guss + nicht_vorhanden + unbekannt + + + + + + + + + 20191014 + + + + 1.001 + nicht_notwendig + + rund + 1100 + entlueftet + 1918.000 + + + 2646400.000 + 1139800.000 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.002 + nicht_notwendig + + eckig + 1100 + entlueftet + Von Roll AG + 1918.000 + + + 2646410.000 + 1139809.000 + + + groesser_50cm + Guss_mit_Betonfuellung + vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.003 + nicht_notwendig + + eckig + 1100 + entlueftet + Nottaris + 1919.600 + + + 2646497.500 + 1139902.200 + + + plusminus_10cm + Guss + vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.030 + nicht_notwendig + + rund + 1100 + entlueftet + 2210.000 + + + 2648150.120 + 1143401.760 + + + plusminus_3cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 2.001 + nicht_notwendig + + rund + 1100 + entlueftet + 2210.000 + + + 2648000.000 + 1143400.000 + + + plusminus_50cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 2.002 + nicht_notwendig + + rund + 1100 + entlueftet + Von Roll AG + 2210.000 + + + 2647978.206 + 1143400.316 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 2.003 + nicht_notwendig + + rund + 1100 + entlueftet + Giesserei + 2210.000 + + + 2647940.000 + 1143400.000 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 2.005 + unbekannt + + eckig + unbekannt + 2255.000 + + + 2647100.000 + 1143650.000 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 2.004 + nicht_notwendig + + rund + 1100 + entlueftet + 2230.000 + + + 2647450.100 + 1143530.000 + + + plusminus_10cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 2.006 + unbekannt + + eckig + entlueftet + 2385.000 + + + 2646750.000 + 1143820.000 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 2.007 + unbekannt + + unbekannt + entlueftet + 2450.000 + + + 2646570.000 + 1144000.100 + + + plusminus_10cm + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.035 + nicht_notwendig + + rund + 1100 + entlueftet + 2385.000 + + + 2648490.000 + 1145001.000 + + + unbekannt + Beton + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.040 + nicht_notwendig + + rund + 1100 + entlueftet + 2436.100 + + + 2648300.000 + 1146002.000 + + + unbekannt + Beton + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.045 + nicht_notwendig + + rund + 1100 + entlueftet + 2497.000 + + + 2648001.000 + 1146999.000 + + + unbekannt + Beton + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.050 + nicht_notwendig + + rund + 1100 + entlueftet + Von Roll AG + 2564.320 + + + 2647210.000 + 1147998.300 + + + plusminus_10cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.055 + nicht_notwendig + + rund + 1100 + entlueftet + Von Roll AG + 2660.000 + + + 2646573.000 + 1149052.000 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.056 + nicht_notwendig + + rund + 1100 + entlueftet + Von Roll AG + 2673.000 + + + 2646480.000 + 1149250.000 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.057 + nicht_notwendig + + rund + 1100 + entlueftet + Von Roll AG + 2688.000 + + + 2646325.000 + 1149500.000 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.062 + nicht_notwendig + + rund + 1100 + entlueftet + 2704.500 + + + 2646103.000 + 1149720.000 + + + unbekannt + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 10.004 + unbekannt + + eckig + unbekannt + Von Roll AG + 2707.500 + + + 2646152.234 + 1150111.377 + + + plusminus_3cm + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 10.010 + unbekannt + + rund + 600 + unbekannt + Von Roll AG + 2718.000 + + + 2646003.000 + 1150257.000 + + + groesser_50cm + Guss + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 10.030 + unbekannt + + rund + 600 + entlueftet + Von Roll AG + 2800.000 + + + 2645000.000 + 1151700.000 + + + groesser_50cm + Guss_mit_Belagsfuellung + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 10.050 + notwendig + + rund + nicht_entlueftet + Von Roll AG + 2955.000 + + + 2644001.320 + 1153001.000 + + + plusminus_3cm + Guss_mit_Betonfuellung + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 10.085 + notwendig + + rund + nicht_entlueftet + Von Roll Nr. 2624 000 000, Typ Bern + 3180.000 + + + 2642500.000 + 1154000.000 + + + groesser_50cm + Guss_mit_Betonfuellung + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + Kontrolle durch Gemeindearbeiter + 10.095 + notwendig + + rund + nicht_entlueftet + Erzenberg + 3360.000 + + + 2641700.000 + 1155002.000 + + + groesser_50cm + Guss_mit_Betonfuellung + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 10.097 + unbekannt + + rund + entlueftet + Erzenberg + 3401.000 + + + 2641680.000 + 1155230.000 + + + groesser_50cm + Guss + unbekannt + verschraubt + + + + + + + + + 20191014 + + + + 10.098 + unbekannt + + eckig + unbekannt + 3454.000 + + + 2641680.000 + 1155250.000 + + + unbekannt + andere + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 10.099 + unbekannt + + rund + entlueftet + Nottaris AG, Fig. 1234, Typ Aletsch + 3454.200 + + + 2641700.000 + 1155580.000 + + + groesser_50cm + Guss_mit_Betonfuellung + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 11.001 + unbekannt + + unbekannt + unbekannt + Giesserei + 3180.100 + + + 2642561.986 + 1154527.180 + + + plusminus_3cm + unbekannt + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 11.002 + unbekannt + + unbekannt + unbekannt + Giesserei + 3418.000 + + + 2643099.000 + 1155003.000 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 11.003 + unbekannt + + unbekannt + unbekannt + Giesserei + 3620.000 + + + 2643582.000 + 1156033.000 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 11.004 + unbekannt + + andere + unbekannt + 3620.000 + + + 2643582.000 + 1156053.000 + + + unbekannt + andere + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.070 + nicht_notwendig + + rund + 1100 + entlueftet + 2740.000 + + + 2645200.000 + 1149950.000 + + + plusminus_50cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.080 + nicht_notwendig + + rund + 1100 + entlueftet + 2798.000 + + + 2644125.000 + 1149500.000 + + + plusminus_50cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.090 + nicht_notwendig + + rund + 1100 + entlueftet + 2900.000 + + + 2643250.000 + 1148900.000 + + + plusminus_50cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.110 + nicht_notwendig + + rund + 1100 + entlueftet + 3060.000 + + + 2640900.000 + 1147400.000 + + + plusminus_50cm + Guss + nicht_vorhanden + nicht_verschraubt + + + + + + + + + 20191014 + + + + 10.003 + unbekannt + + unbekannt + entlueftet + Giesserei + 2706.000 + + + 2646150.054 + 1149949.914 + + + unbekannt + andere + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 10.002 + unbekannt + + andere + entlueftet + Von Roll AG + 2706.000 + + + 2646150.000 + 1149925.000 + + + unbekannt + andere + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.100 + unbekannt + + andere + 600 + unbekannt + Von Roll AG + 2980.000 + + + 2642297.031 + 1148312.317 + + + plusminus_3cm + unbekannt + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + V1.100 + unbekannt + + unbekannt + nicht_entlueftet + Von Roll AG + + + 2644839.938 + 1150030.877 + + + plusminus_3cm + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 3.001 + unbekannt + + andere + 600 + nicht_entlueftet + Von Roll AG + 2703.100 + + + 2647196.507 + 1150443.315 + + + plusminus_3cm + Guss_mit_Betonfuellung + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 3.010 + unbekannt + + rund + 600 + entlueftet + Von Roll AG + 3286.000 + + + 2649482.777 + 1151464.103 + + + plusminus_3cm + Guss + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 3.025 + unbekannt + + rund + 600 + entlueftet + Von Roll AG + 3048.000 + + + 2651878.454 + 1152540.236 + + + plusminus_3cm + Guss + unbekannt + nicht_verschraubt + + + + + + + + + 20191014 + + + + 1.070.1 + unbekannt + + unbekannt + unbekannt + 2738.700 + + + 2645144.278 + 1150033.109 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.05 + unbekannt + + unbekannt + unbekannt + + + 2645366.137 + 1149981.606 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.04 + unbekannt + + unbekannt + unbekannt + + + 2645461.219 + 1149969.721 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.031 + unbekannt + + unbekannt + unbekannt + + + 2645544.416 + 1149961.798 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.03 + unbekannt + + unbekannt + unbekannt + + + 2645627.613 + 1149941.989 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.2 + unbekannt + + unbekannt + unbekannt + + + 2646063.408 + 1149811.250 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.1 + unbekannt + + unbekannt + unbekannt + + + 2646043.599 + 1149644.856 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.070.11 + unbekannt + + unbekannt + unbekannt + + + 2645259.169 + 1150084.612 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.02 + unbekannt + + unbekannt + unbekannt + + + 2645593.938 + 1149827.097 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + 1.062.01 + unbekannt + + unbekannt + unbekannt + + + 2645744.485 + 1149783.518 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + KS1 + unbekannt + + unbekannt + unbekannt + 1910.000 + + + 2646240.000 + 1139605.000 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + V1.101 + unbekannt + + unbekannt + unbekannt + + + 2644771.360 + 1149998.528 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + V1.102 + unbekannt + + unbekannt + unbekannt + + + 2644809.550 + 1149894.870 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + EH2 + unbekannt + + rund + nicht_entlueftet + 1900.000 + + + 2645200.000 + 1149940.190 + + + plusminus_3cm + Guss + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + VB214003 + unbekannt + + unbekannt + unbekannt + + + 2645558.900 + 1149816.850 + + + unbekannt + unbekannt + unbekannt + unbekannt + + + + + + + + + 20191014 + + + + Beleuchtung1 + notwendig + + Beleuchtung + 505.00 + 2002 + + + + + + + + + 20191014 + + + + FW1 + nicht_notwendig + + Fernwirkanlage + + + + + + + + + 20191014 + + + + Gaswarngerät + Gaswarngeraet1 + nicht_notwendig + + andere + + + + + + + + + 20191014 + + + + Telefon1 + notwendig + + Telephon + + + + + + + + + 20191014 + + + + Luftentfeuchter + nicht_notwendig + + Luftentfeuchter + 2000.00 + 2010 + + + + + + + + + 20191014 + + + + BN10 + nicht_notwendig + + einseitig + + + + + + + + + 20191014 + + + + BN16 + notwendig + + beidseitig + + + + + + + + + 20191014 + + + + BN25 + nicht_notwendig + + einseitig + + + + + + + + + 20191014 + + + + BN29 + unbekannt + + kein + + + + + 20191014 + + + + 1988 + Z0 + V1.100kf + 2010 + oeffentlich + 1.00 + Hoffeld + in_Betrieb + 0.00 + 1970 + Feld + 0.00 + zugaenglich + + + gewaesserrelevant + + + + + 20191014 + + + + 1950 + + Z0 + 0.001 + + 50 + oeffentlich + 2.00 + + kurzfristig + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + 0.30 + + + 881001 + CH0002850000 + + gewaesserrelevant + + + + + + 20191014 + + + + 2020 + 0.002 + oeffentlich + 2.00 + unbekannt + Olmen + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + 881001 + CH0002850000 + + gewaesserrelevant + + + + + + + + + + + + 20191014 + + + + 1950 + Z4 + 0.005 + oeffentlich + 1.00 + keiner + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + 881001 + CH0002850000 + + gewaesserrelevant + + + + + + + + + + + + 20191014 + + + + 1977 + Z4 + 0.006 + oeffentlich + 1.20 + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + gewaesserrelevant + + + + + + + + + + 20191014 + + + + 1950 + Z3 + 0.000 + oeffentlich + 1.20 + unbekannt + in_Betrieb + 1970 + Feld + 0.00 + unbekannt + + + gewaesserrelevant + + + + 20191014 + + + 1980 + Z4 + Los 5 + VB1 + 100000.00 + + + + + + 2646380.000 + 1139775.000 + + + 2646350.000 + 1139745.000 + + + 2646340.000 + 1139755.000 + + + 2646370.000 + 1139785.000 + + + 2646380.000 + 1139775.000 + + + + + + 2008 + oeffentlich + 2.00 + kurzfristig + Aletsch + in_Betrieb + 57000.00 + 1970 + Feld + 560000.00 + zugaenglich + + + Vorklaerbecken + + + + + + + + + + 20191014 + + + + Test + 1960 + Z4 + Los 1 + VB2 + 50000.00 + + + + + + 2646365.000 + 1139790.000 + + + 2646335.000 + 1139760.000 + + + 2646325.000 + 1139770.000 + + + 2646355.000 + 1139800.000 + + + 2646365.000 + 1139790.000 + + + + + + 1980 + oeffentlich + unbekannt + Aletsch + ausser_Betrieb + 25000.00 + 1970 + Feld + 1500000.00 + zugaenglich + + + Vorklaerbecken + + + + + + + + + + 20191014 + + + + Test + 2020 + Z4 + Los 14 + VB3 + 150000.00 + + + + + + 2646395.000 + 1139760.000 + + + 2646365.000 + 1139730.000 + + + 2646355.000 + 1139740.000 + + + 2646385.000 + 1139770.000 + + + 2646395.000 + 1139760.000 + + + + + + 2070 + oeffentlich + 3.00 + unbekannt + Aletsch + weitere.Projekt + 45000.00 + 1970 + Feld + 0.00 + unbekannt + + + Vorklaerbecken + + + + + + + + + + 20191014 + + + + 1960 + Z4 + BB + + + + + + 2646345.000 + 1139730.000 + + + 2646325.000 + 1139710.000 + + + 2646305.000 + 1139730.000 + + + 2646325.000 + 1139750.000 + + + 2646345.000 + 1139730.000 + + + + + + 2006 + oeffentlich + 2.00 + mittelfristig + Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + Belebtschlammbecken + + + + + + + + + + 20191014 + + + + 1960 + Z4 + AB + + + + + + 2646310.000 + 1139705.000 + + + 2646280.000 + 1139675.000 + + + 2646270.000 + 1139685.000 + + + 2646300.000 + 1139715.000 + + + 2646310.000 + 1139705.000 + + + + + + 2006 + oeffentlich + 2.00 + mittelfristig + Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + Absetzbecken + + + + + + + + + + 20191014 + + + + 2020 + Z4 + FBR1 + + + + + + 2646265.000 + 1139660.000 + + + 2646265.000 + 1139630.000 + + + 2646255.000 + 1139630.000 + + + 2646255.000 + 1139660.000 + + + 2646265.000 + 1139660.000 + + + + + + 2030 + oeffentlich + 3.00 + unbekannt + Aletsch + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + Festbettreaktor + + + + + + + + + + 20191014 + + + + 2020 + Z4 + FBR2 + + + + + + 2646280.000 + 1139660.000 + + + 2646280.000 + 1139630.000 + + + 2646270.000 + 1139630.000 + + + 2646270.000 + 1139660.000 + + + 2646280.000 + 1139660.000 + + + + + + 2030 + oeffentlich + 3.00 + unbekannt + Aletsch + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + Festbettreaktor + + + + + + + + + + 20191014 + + + + 2020 + Z4 + FBR3 + + + + + + 2646295.000 + 1139660.000 + + + 2646295.000 + 1139630.000 + + + 2646285.000 + 1139630.000 + + + 2646285.000 + 1139660.000 + + + 2646295.000 + 1139660.000 + + + + + + 2030 + oeffentlich + 3.00 + unbekannt + Aletsch + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + Festbettreaktor + + + + + + + + + + 20191014 + + + + 2020 + Z4 + TTK + + + + + + 2646315.000 + 1139660.000 + + + 2646315.000 + 1139640.000 + + + 2646305.000 + 1139640.000 + + + 2646305.000 + 1139660.000 + + + 2646315.000 + 1139660.000 + + + + + + 2030 + oeffentlich + 3.00 + unbekannt + Aletsch + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + Tauchtropfkoerper + + + + + + + + + + 20191014 + + + + 2019 + Z4 + TK + + + + + + 2646335.000 + 1139660.000 + + + 2646335.000 + 1139630.000 + + + 2646325.000 + 1139630.000 + + + 2646325.000 + 1139660.000 + + + 2646335.000 + 1139660.000 + + + + + + 2030 + oeffentlich + 3.00 + unbekannt + Aletsch + weitere.Projekt + 1970 + Feld + 0.00 + unbekannt + + + Tropfkoerper + + + + + + + + + + 20191014 + + + + Untersuchung + Oekologiebüro + Darf nur an Abwasserbauwerk (Einleitstelle) angehängt werden + Beurteilung 2014 + + 1 + + Gesamtbeurteilung Bemerkung hier eintragen + STORM Beurteilung + 2600 + ausgefuehrt + 20140516 + + + + + + 20201002 + + + + Eva Muster, Zusätzlich AusfuehrendeFirmaRef + Darf nur an Abwasserbauwerk (Einleitstelle) angehängt werden + Beurteilung 2020 + + 1 + + SK_Einleitstelle.Gesamtbeurteilung_Bemerkung hier eintragen + Biol_oekol_Gesamtbeurteilung + 3100 + geplant + 20200315 + + + 400 + 20140516 + klein_mittel + kein_klein + Kleiner_Voralpenbach + 23 + 10 + 8 + ja_kurzfristig + ja + Aletschfluss + 32.333 + 2 + ja + Verschlechterung + + + + + 20191014 + + + + + Sanierung_Reparatur + Ingenieurbüro Schmitz und Hille + + EH001005 + Ausführungspläne + 14 + Ordner KG123 + Risse geflickt + Versickerung ins Grundwasser + 10000 + ausgefuehrt + 19870312 + + + + + + + + + + + 20191014 + + + + Untersuchung + EAWAG Diplomand + + EH001128 + Ausführungspläne + 1 + + Inspektion ok. + jährliche Inspektion + 0 + ausgefuehrt + 20020615 + + + + + + + + + 20191014 + + + + Untersuchung + + + EH001129 + + 1 + + Inspektion ok. + jährliche Inspektion + 0 + geplant + 20200615 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + 1950 + Z0 + 1.002 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + + Kontroll_Einsteigschacht + keiner + + + + + + + + + 20191014 + + + + 1950 + Z0 + 1.003 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.030 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + 2.001 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + 2.003 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 2005 + Z4 + 2.004 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + 2.005 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + 2.006 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 2025 + Z4 + 2.007 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.035 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.040 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.045 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.050 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + keiner + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.055 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.056 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.057 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.062 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.010 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.030 + oeffentlich + keiner + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.050 + oeffentlich + keiner + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.085 + oeffentlich + keiner + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.095 + oeffentlich + keiner + Jungfraujoch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.097 + oeffentlich + keiner + Jungfraujoch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.099 + oeffentlich + keiner + Jungfraujoch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 11.001 + 2004 + oeffentlich + 1.20 + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 11.002 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 11.003 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + Schlammsammler + keiner + + + + + + + + + 20191014 + + + + 1950 + Z4 + Alte Bezeichnung: SH1 + 1.070 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.080 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.090 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1950 + Z4 + 1.110 + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + 800 + 800 + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1977 + Z4 + 1.100 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1977 + Z4 + 3.001 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + keiner + + + + + + + + + 20191014 + + + + 1977 + Z4 + 3.010 + oeffentlich + unbekannt + Grünhornlücke + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1977 + Z4 + V1.100.1 + oeffentlich + keiner + in_Betrieb + zugaenglich + + + 900 + 1100 + Schlammsammler + keiner + + + + + + + + + 20191014 + + + + 1977 + Z4 + 1.070.1 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1977 + Z4 + 1.062.05 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + Einlaufschacht + Rost + + + + + + + + + 20191014 + + + + 1977 + Z4 + 1.062.04 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + Einlaufschacht + Rost + + + + + + + + + 20191014 + + + + 1977 + Z4 + 1.062.031 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + Einlaufschacht + Rost + + + + + + + + + 20191014 + + + + Z4 + 1.062.03 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + Einlaufschacht + Rost + + + + + + + + + 20191014 + + + + Z4 + 1.062.2 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + Z4 + 1.062.1 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + Z4 + 1.070.11 + oeffentlich + 1.00 + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + Z4 + 1.062.02 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + Z4 + 1.062.01 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + + Kontroll_Einsteigschacht + unbekannt + + + + + + + + + 20191014 + + + + 1977 + Z4 + V1.101 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + Einlaufschacht + Rost + + + + + + + + + 20191014 + + + + 1977 + Z4 + V1.102 + oeffentlich + unbekannt + in_Betrieb + unbekannt + + + Einlaufschacht + Rost + + + + + + + + + 20191014 + + + + 1977 + Z4 + EK2 + oeffentlich + dringend + in_Betrieb + zugaenglich + + + + Kontroll_Einsteigschacht + keiner + + + + + + + + + 20191014 + + + + 1977 + Z4 + VB214003 + oeffentlich + unbekannt + in_Betrieb + zugaenglich + + + + Kontroll_Einsteigschacht + keiner + + + 20191014 + + + + 1950 + Z4 + geändert von Hochwasserentlastung auf Regenueberlauf + 1.001 + 120000.00 + 2006 + oeffentlich + 1.50 + keiner + unter Aletsch + in_Betrieb + 27500.00 + 1973 + Feld + 150000.00 + zugaenglich + + + nicht_vorhanden + Regenueberlauf + + + + + + + + + 20191014 + + + + 2025 + Z4 + geändert von Hochwasserentlastung auf Regenueberlauf + 2.002 + oeffentlich + unbekannt + Olmen + weitere.Projekt + zugaenglich + + + unbekannt + Regenueberlauf + + + + + + + + + 20191014 + + + + 1950 + Z4 + hier münden die 3 Dükerleitungen wieder zusammen + 10.002 + oeffentlich + keiner + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + unbekannt + + Kontroll_Einsteigschacht + + + + + + + + + 20191014 + + + + 1950 + Z4 + tiefster Punkt des Dükers zur Entleerung + 10.003 + oeffentlich + keiner + unter Aletsch + in_Betrieb + 1970 + Feld + 0.00 + zugaenglich + + + unbekannt + + Duekerkammer + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.004 + + + + + + 2646150.542 + 1150110.166 + + + 2646152.173 + 1150111.764 + + + 2646153.871 + 1150110.766 + + + 2646154.437 + 1150109.068 + + + 2646150.908 + 1150109.134 + + + 2646150.542 + 1150110.166 + + + + + + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + unbekannt + Duekerkammer + + + + + + + + + 20191014 + + + + 1950 + Z4 + 10.098 + oeffentlich + keiner + Jungfraujoch + in_Betrieb + zugaenglich + + + unbekannt + Wirbelfallschacht + + + + + + + + + 20191014 + + + + 1950 + Z4 + 11.004 + + + + + + 2643581.012 + 1156051.726 + + + 2643579.844 + 1156061.719 + + + 2643587.761 + 1156062.498 + + + 2643588.669 + 1156052.635 + + + 2643581.012 + 1156051.726 + + + + + + oeffentlich + keiner + unter Aletsch + in_Betrieb + zugaenglich + + + vorhanden + Klaergrube + + + + + + + + + 20191014 + + + + 1977 + Z4 + 3.025 + oeffentlich + unbekannt + in_Betrieb + zugaenglich + + + unbekannt + Pumpwerk + + in_Mischabwasserkanalisation + + + + + + + + + 20191014 + + + + 1960 + Z4 + geändert von Trennschacht auf Trennbauwerk + TS1 + oeffentlich + keiner + in_Betrieb + zugaenglich + + + unbekannt + Trennbauwerk + + + + + + + + + 20191014 + + + + 2025 + Z4 + geändert von Trennschacht auf Trennbauwerk + TS2 + oeffentlich + keiner + weitere.Projekt + zugaenglich + + + unbekannt + Trennbauwerk + + + + + + + + + 20191014 + + + + 2025 + Z4 + geändert von Trennschacht auf Trennbauwerk + TS3 + oeffentlich + keiner + weitere.Projekt + zugaenglich + + + unbekannt + Trennbauwerk + + + + + + + + + 20191014 + + + + 2025 + Z4 + geändert von Trennschacht auf Trennbauwerk + TS4 + oeffentlich + keiner + weitere.Projekt + zugaenglich + + + unbekannt + Trennbauwerk + + + + + + + + + 20191014 + + + + 1960 + Z4 + TS0 + oeffentlich + 1.00 + unbekannt + in_Betrieb + zugaenglich + + + unbekannt + Trennbauwerk + + + + + + + + + 20191014 + + + + 2006 + Z4 + KS2 + oeffentlich + 1.00 + unbekannt + in_Betrieb + zugaenglich + + + unbekannt + + Kontroll_Einsteigschacht + + + + + + + + + 20191014 + + + + 2006 + Z4 + KS3 + oeffentlich + 1.00 + unbekannt + in_Betrieb + zugaenglich + + + unbekannt + + Kontroll_Einsteigschacht + + + + + + + + + 20191014 + + + + 2006 + Z4 + KS4 + oeffentlich + 1.00 + unbekannt + in_Betrieb + zugaenglich + + + unbekannt + + Kontroll_Einsteigschacht + + + + + + + + + 20191014 + + + + 2006 + Z4 + KS1 + oeffentlich + 1.00 + unbekannt + in_Betrieb + zugaenglich + + + unbekannt + + Kontroll_Einsteigschacht + + + + + + + + + 20191014 + + + + 1960 + Z4 + RB_Fangbecken + + + + + + 2647995.076 + 1143397.595 + + + 2647976.573 + 1143397.595 + + + 2647979.232 + 1143429.997 + + + 2647997.755 + 1143428.313 + + + 2647995.076 + 1143397.595 + + + + + + oeffentlich + keiner + in_Betrieb + zugaenglich + + + nicht_vorhanden + Regenbecken_Fangbecken + Nebenschluss + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + 1.001 + + + + 2646398.800 + 1139799.000 + + + 1913.500 + + + + + + + + + 20191014 + + + + 1.002 + + + + 2646410.000 + 1139809.000 + + + 1913.500 + + + + + + + + + 20191014 + + + + 1.003 + + + + 2646497.500 + 1139902.200 + + + 1915.000 + + + + + + + + + 20191014 + + + + 0.001 + + + + 2646450.000 + 1139600.000 + + + 1911.000 + + + + + + + + + 20191014 + + + + 1.030 + + + + 2648150.120 + 1143401.760 + + + 2200.000 + + + + + + + + + 20191014 + + + + 2.001 + + + + 2648000.000 + 1143400.000 + + + 2201.400 + + + + + + + + + 20191014 + + + + 2.002 + + + + 2647978.206 + 1143400.316 + + + 2202.400 + + + + + + + + + 20191014 + + + + 2.003 + + + + 2647940.000 + 1143400.000 + + + 2203.050 + + + + + + + + + 20191014 + + + + 2.002E + + + + 2647977.876 + 1143398.220 + + + 2201.000 + + + 20191014 + + + 0.002 + + + + 2648225.000 + 1143025.000 + + + 2165.500 + + + 20191014 + + + + 2.004 + + + + 2647450.000 + 1143530.000 + + + 2225.500 + + + + + + + + + 20191014 + + + + 2.005 + + + + 2647100.000 + 1143650.000 + + + 2250.500 + + + + + + + + + 20191014 + + + + 2.006 + + + + 2646750.000 + 1143820.000 + + + 2380.500 + + + + + + + + + 20191014 + + + + 2.007 + + + + 2646570.000 + 1144000.100 + + + 2445.500 + + + + + + + + + 20191014 + + + + 1.035 + + + + 2648490.000 + 1145001.000 + + + 2380.500 + + + + + + + + + 20191014 + + + + 1.040 + + + + 2648300.000 + 1146002.000 + + + 2431.600 + + + + + + + + + 20191014 + + + + 1.045 + + + + 2648001.000 + 1146999.000 + + + 2492.500 + + + + + + + + + 20191014 + + + + 1.050 + + + + 2647210.000 + 1147998.300 + + + 2559.820 + + + + + + + + + 20191014 + + + + 1.055 + + + + 2646573.000 + 1149052.000 + + + 2655.500 + + + + + + + + + 20191014 + + + + 1.056 + + + + 2646480.000 + 1149250.000 + + + 2668.500 + + + + + + + + + 20191014 + + + + 1.057 + + + + 2646325.000 + 1149500.000 + + + 2683.500 + + + + + + + + + 20191014 + + + + 1.062 + + + + 2646103.000 + 1149720.000 + + + 2700.000 + + + + + + + + + 20191014 + + + + 10.002 + + + + 2646150.000 + 1149925.000 + + + 2702.000 + + + + + + + + + 20191014 + + + + 10.003 + + + + 2646151.000 + 1149950.000 + + + 2692.000 + + + + + + + + + 20191014 + + + + 10.004 + + + + 2646152.000 + 1150110.000 + + + 2702.800 + + + + + + + + + 20191014 + + + + 0.005 + + + + 2646162.000 + 1150000.000 + + + 2696.000 + + + + + + + + + 20191014 + + + + 10.010 + + + + 2646003.000 + 1150257.000 + + + 2714.500 + + + + + + + + + 20191014 + + + + 10.030 + + + + 2645000.000 + 1151700.000 + + + 2796.500 + + + + + + + + + 20191014 + + + + 10.050 + + + + 2644001.320 + 1153001.000 + + + 2951.500 + + + + + + + + + 20191014 + + + + 10.085 + + + + 2642500.000 + 1154000.000 + + + 3176.500 + + + + + + + + + 20191014 + + + + 10.095 + + + + 2641700.000 + 1155002.000 + + + 3356.500 + + + + + + + + + 20191014 + + + + 10.097 + + + + 2641680.000 + 1155230.000 + + + 3397.500 + + + + + + + + + 20191014 + + + + 10.098 + + + + 2641680.000 + 1155250.000 + + + 3397.700 + + + + + + + + + 20191014 + + + + 10.099 + + + + 2641700.000 + 1155580.000 + + + 3450.700 + + + + + + + + + 20191014 + + + + 11.001 + + + + 2642561.986 + 1154527.180 + + + 3176.600 + + + + + + + + + 20191014 + + + + 11.002 + + + + 2643099.000 + 1155003.000 + + + 3414.500 + + + + + + + + + 20191014 + + + + 11.003 + + + + 2643582.000 + 1156033.000 + + + 3616.500 + + + + + + + + + 20191014 + + + + 11.004 + + + + 2643582.000 + 1156053.000 + + + 3616.500 + + + + + + + + + 20191014 + + + + Alte Bezeichnung: SH1 + 1.070 + + + + 2645200.000 + 1149950.000 + + + 2736.500 + + + + + + + + + 20191014 + + + + 1.080 + + + + 2644125.000 + 1149500.000 + + + 2794.500 + + + + + + + + + 20191014 + + + + 1.090 + + + + 2643250.000 + 1148900.000 + + + 2896.500 + + + + + + + + + 20191014 + + + + 1.110.2 + + + + 2640900.000 + 1147400.000 + + + 3056.500 + + + + + + + + + 20191014 + + + + 1.110.1 + + + + 2640892.002 + 1147409.645 + + + + + + + + + + + 20191014 + + + + 1.100.1 + + + + 2642297.031 + 1148312.317 + + + + + + + + + + + 20191014 + + + + 1.100 + + + + 2642300.000 + 1148300.000 + + + + + + + + + + + 20191014 + + + + 1.200 + + + + 2642824.905 + 1149343.304 + + + + + 20191014 + + + + V1.100 + + + + 2644839.938 + 1150030.877 + + + + + + + + + + + 20191014 + + + + 3.001 + + + + 2647196.507 + 1150443.315 + + + + + + + + + + + 20191014 + + + + 3.010 + + + + 2649482.777 + 1151464.103 + + + + + + + + + + + 20191014 + + + + 3.025 + + + + 2651878.454 + 1152540.236 + + + 3039.000 + + + + + + + + + 20191014 + + + + VB1 + + + + 2646360.000 + 1139765.000 + + + 1910.500 + + + + + + + + + 20191014 + + + + VB2 + + + + 2646345.000 + 1139780.000 + + + 1910.500 + + + + + + + + + + 20191014 + + + + VB3 + + + + 2646375.000 + 1139750.000 + + + 1910.500 + + + + + + + + + + 20191014 + + + + BB + + + + 2646325.000 + 1139730.000 + + + 1910.300 + + + + + + + + + + 20191014 + + + + AB + + + + 2646290.000 + 1139695.000 + + + 1909.000 + + + + + + + + + + 20191014 + + + + FBR1 + + + + 2646260.000 + 1139645.000 + + + 1906.000 + + + + + + + + + + 20191014 + + + + FBR2 + + + + 2646275.000 + 1139645.000 + + + 1906.000 + + + + + + + + + + 20191014 + + + + FBR3 + + + + 2646290.000 + 1139645.000 + + + 1906.000 + + + + + + + + + + 20191014 + + + + TTK + + + + 2646310.000 + 1139650.000 + + + 1909.700 + + + + + + + + + + 20191014 + + + + TK + + + + 2646330.000 + 1139645.000 + + + 1910.500 + + + + + + + + + + 20191014 + + + + TS1 + + + + 2646337.500 + 1139742.500 + + + 1911.500 + + + + + + + + + 20191014 + + + + TS2 + + + + 2646275.000 + 1139665.000 + + + 1910.500 + + + + + + + + + 20191014 + + + + TS3 + + + + 2646290.000 + 1139665.000 + + + 1910.500 + + + + + + + + + 20191014 + + + + TS4 + + + + 2646310.000 + 1139665.000 + + + 1910.500 + + + + + + + + + 20191014 + + + + 1.001.1 + + + + 2646400.000 + 1139799.100 + + + 1913.000 + + + + + + + + + 20191014 + + + + TS0 + + + + 2646390.000 + 1139790.000 + + + 1913.400 + + + + + + + + + 20191014 + + + + KS2 + + + + 2646275.000 + 1139625.000 + + + 1909.000 + + + + + + + + + 20191014 + + + + KS3 + + + + 2646290.000 + 1139625.000 + + + 1909.000 + + + + + + + + + 20191014 + + + + Transferdatensatz, keine realen Daten + KS4 + + + + 2646310.000 + 1139625.000 + + + + 1912.300 + 1909.000 + + + + + + + + + 20191014 + + + + KS1 + + + + 2646240.000 + 1139605.000 + + + 1908.000 + + + + + + + + + 20191014 + + + + RB_Fangbecken + + + + 2647996.259 + 1143426.868 + + + 2202.000 + + + + + + + + + + 20191014 + + + + 1.070.1 + + + + 2645144.278 + 1150033.109 + + + 2736.700 + + + + + + + + + 20191014 + + + + 1.062.05 + + + + 2645366.137 + 1149981.606 + + + + + + + + + + + 20191014 + + + + 1.062.04 + + + + 2645461.219 + 1149969.721 + + + + + + + + + + + 20191014 + + + + 1.062.031 + + + + 2645544.416 + 1149961.798 + + + + + + + + + + + 20191014 + + + + 1.062.03 + + + + 2645627.613 + 1149941.989 + + + + + + + + + + + 20191014 + + + + 1.062.2 + + + + 2646063.408 + 1149811.250 + + + + + + + + + + + 20191014 + + + + 1.062.1 + + + + 2646043.599 + 1149644.856 + + + + + + + + + + + 20191014 + + + + 1.070.11 + + + + 2645259.169 + 1150084.612 + + + + + + + + + + + 20191014 + + + + 1.062.02 + + + + 2645593.938 + 1149827.097 + + + + + + + + + + + 20191014 + + + + 1.062.01 + + + + 2645744.485 + 1149783.518 + + + + + + + + + + + 20191014 + + + + 10.003B + + + + 2646150.400 + 1149950.014 + + + + + + + + + + + 20191014 + + + + 10.003C + + + + 2646151.600 + 1149949.986 + + + + + + + + + + + 20191014 + + + + V1.101 + + + + 2644771.360 + 1149998.528 + + + + + + + + + + + 20191014 + + + + V1.102 + + + + 2644809.550 + 1149894.870 + + + 1911.000 + + + + + + + + + 20191014 + + + + 0.000 + + + + 2645890.000 + 1139276.300 + + + 1911.000 + + + + + + + + + 20191014 + + + + EK2 + + + + 2645200.000 + 1149940.190 + + + + + + + + + + + 20191014 + + + + VB214003 + + + + 2645559.217 + 1149816.850 + + + + + 20191014 + + + Elektromotor + Schieber + zum Einstellen des ARA Zuflusses + DR1 + 10000.00 + Schieber AG + 0.30 + senden_empfangen + gesteuert + 5000.00 + verstellbar + 0.20 + + + + + + + + + + + + 20191014 + + + + pneumatisch + Schieber + Entleerungsschieber + unbekannt + gesteuert + verstellbar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20191014 + + + + 1.003-1.002 + + + 89 + Steinzeugauskleidung + 127.84 + ungenau + 2000 + Beton_Spezialbeton + + + + 2646497.500 + 1139902.200 + + + 2646410.000 + 1139809.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.002-1.001 + + Steinzeugauskleidung + 12.04 + genau + 2000 + Beton_Spezialbeton + 1 + + + + 2646410.000 + 1139809.000 + + + 2646401.000 + 1139801.000 + + + 2646398.800 + 1139799.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.001.1-0.001 + + Steinzeugauskleidung + 204.64 + genau + 1500 + Beton_Spezialbeton + + + + 2646400.000 + 1139799.100 + + + 2646400.250 + 1139798.500 + + + 2646450.000 + 1139600.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.030-1.003 + + Steinzeugauskleidung + 3870.15 + ungenau + 2000 + Beton_Spezialbeton + + + + 2648150.120 + 1143401.760 + + + 2646497.500 + 1139902.200 + + + + + + + + + + + + + + + 20191014 + + + + 2.001-1.003 + + unbekannt + 150.13 + unbekannt + 200 + Gebrannte_Steine + + + + 2648000.000 + 1143400.000 + + + 2648150.120 + 1143401.760 + + + + + + + + + + + + + + + 20191014 + + + + 2.002-2.001 + + unbekannt + 17.49 + unbekannt + 600 + Gebrannte_Steine + + + + 2647978.206 + 1143400.316 + + + 2647982.514 + 1143400.264 + + + 2648000.000 + 1143400.000 + + + + + + + + + + + + + + + 20191014 + + + + 2.003-2.002 + + unbekannt + 36.76 + unbekannt + 800 + Gebrannte_Steine + + + + 2647940.000 + 1143400.000 + + + 2647976.762 + 1143400.264 + + + 2647978.206 + 1143400.316 + + + + + + + + + + + + + + + 20191014 + + + + 2.002E-0.002 + + unbekannt + 447.05 + unbekannt + 1000 + Beton_Ortsbeton + + + + 2647977.876 + 1143398.220 + + + 2647977.965 + 1143397.595 + + + 2648225.000 + 1143025.000 + + + + + + + + + + + + + + + 20191014 + + + + 2.004-2.003 + + unbekannt + 506.95 + unbekannt + 800 + Gebrannte_Steine + + + + 2647450.000 + 1143530.000 + + + 2647940.000 + 1143400.000 + + + + + + + + + + + + + + + 20191014 + + + + 2.005-2.004 + + unbekannt + 370.00 + unbekannt + 800 + Gebrannte_Steine + + + + 2647100.000 + 1143650.000 + + + 2647450.000 + 1143530.000 + + + + + + + + + + + + + + + 20191014 + + + + 2.006-2.005 + + unbekannt + 389.10 + unbekannt + 800 + Gebrannte_Steine + + + + 2646750.000 + 1143820.000 + + + 2647100.000 + 1143650.000 + + + + + + + + + + + + + + + 20191014 + + + + 2.007-2.006 + + unbekannt + 254.63 + unbekannt + 800 + Gebrannte_Steine + + + + 2646570.000 + 1144000.100 + + + 2646750.000 + 1143820.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.035-1.030 + + Steinzeugauskleidung + 1634.96 + ungenau + 1500 + Beton_Spezialbeton + + + + 2648490.000 + 1145001.000 + + + 2648150.120 + 1143401.760 + + + + + + + + + + + + + + + 20191014 + + + + 1.040-1.035 + + Steinzeugauskleidung + 1018.87 + ungenau + 1500 + Beton_Spezialbeton + + + + 2648300.000 + 1146002.000 + + + 2648490.000 + 1145001.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.045-1.040 + + unbekannt + 1040.87 + ungenau + 1500 + Beton_Spezialbeton + + + + 2648001.000 + 1146999.000 + + + 2648300.000 + 1146002.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.050-1.045 + + unbekannt + 1274.47 + ungenau + 1500 + Beton_Spezialbeton + + + + 2647210.000 + 1147998.300 + + + 2648001.000 + 1146999.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.055-1.050 + + unbekannt + 1231.28 + ungenau + 1500 + Beton_Spezialbeton + + + + 2646573.000 + 1149052.000 + + + 2647210.000 + 1147998.300 + + + + + + + + + + + + + + + 20191014 + + + + 1.056-1.055 + + unbekannt + 218.75 + unbekannt + 1500 + Beton_Spezialbeton + + + + 2646480.000 + 1149250.000 + + + 2646573.000 + 1149052.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.057-1.056 + + unbekannt + 294.15 + genau + 1500 + Beton_Spezialbeton + + + + 2646325.000 + 1149500.000 + + + 2646480.000 + 1149250.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.062-1.057 + + unbekannt + 312.54 + ungenau + 1500 + Beton_Spezialbeton + + + + 2646103.000 + 1149720.000 + + + 2646325.000 + 1149500.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.002A-1.062A + + unbekannt + 210.32 + genau + 400 + Beton_Normalbeton + + + + 2646150.000 + 1149925.000 + + + 2646103.000 + 1149720.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.003-10.002C + + unbekannt + 25.02 + genau + 150 + Kunststoff_Polyethylen + + + + 2646151.000 + 1149950.000 + + + 2646150.000 + 1149925.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.003-10.002A + + unbekannt + 25.01 + genau + 200 + Kunststoff_Polyethylen + + + + 2646150.400 + 1149950.014 + + + 2646149.400 + 1149925.024 + + + 2646150.000 + 1149925.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.003-10.002B + + unbekannt + 25.03 + genau + 400 + Beton_Pressrohrbeton + + + + 2646151.600 + 1149949.986 + + + 2646150.600 + 1149924.976 + + + 2646150.000 + 1149925.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.004A-10.003A + + unbekannt + 159.28 + genau + 400 + Beton_Pressrohrbeton + + + + 2646152.000 + 1150110.000 + + + 2646152.606 + 1150109.267 + + + 2646151.600 + 1149949.986 + + + + + + + + + + + + + + + 20191014 + + + + 10.004B-10.003B + + unbekannt + 159.19 + genau + 200 + Kunststoff_Polyethylen + + + + 2646152.000 + 1150110.000 + + + 2646151.408 + 1150109.201 + + + 2646150.400 + 1149950.014 + + + + + + + + + + + + + + + 20191014 + + + + 10.003C-10.003C + + unbekannt + 159.20 + genau + 150 + Kunststoff_Polyethylen + + + + 2646152.000 + 1150110.000 + + + 2646152.007 + 1150109.201 + + + 2646151.000 + 1149950.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.004-0.005 + + unbekannt + 110.12 + genau + 800 + Beton_Ortsbeton + + + + 2646152.000 + 1150110.000 + + + 2646153.572 + 1150109.800 + + + 2646162.000 + 1150000.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.010-10.004 + + unbekannt + 208.18 + ungenau + 500 + Beton_Normalbeton + + + + 2646003.000 + 1150257.000 + + + 2646151.208 + 1150110.799 + + + 2646152.000 + 1150110.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.030-10.010 + + unbekannt + 1757.34 + ungenau + 500 + Beton_Normalbeton + + + + 2645000.000 + 1151700.000 + + + 2646003.000 + 1150257.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.050-10.030 + + unbekannt + 1640.11 + ungenau + 500 + Beton_Normalbeton + + + + 2644001.320 + 1153001.000 + + + 2645000.000 + 1151700.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.085-10.050 + + unbekannt + 1803.32 + ungenau + 500 + Beton_Normalbeton + + + + 2642500.000 + 1154000.000 + + + 2644001.320 + 1153001.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.095-10.085B + + unbekannt + 1282.19 + ungenau + 500 + Beton_Normalbeton + + + + 2641700.000 + 1155002.000 + + + 2642500.000 + 1154000.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.097-10.095 + + unbekannt + 228.88 + ungenau + 500 + Beton_Normalbeton + + + + 2641680.000 + 1155230.000 + + + 2641700.000 + 1155002.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.098-10.097 + + unbekannt + 20.00 + genau + 500 + Beton_Normalbeton + + + + 2641680.000 + 1155250.000 + + + 2641680.000 + 1155230.000 + + + + + + + + + + + + + + + 20191014 + + + + 10.099-10.098 + + unbekannt + 330.61 + genau + 500 + Beton_Normalbeton + + + + 2641700.000 + 1155580.000 + + + 2641680.000 + 1155250.000 + + + + + + + + + + + + + + + 20191014 + + + + 11.001A-10.085A + + unbekannt + 530.81 + genau + 100 + Kunststoff_Polyethylen + + + + 2642561.986 + 1154527.180 + + + 2642550.112 + 1154522.430 + + + 2642525.433 + 1154419.500 + + + 2642510.934 + 1154145.770 + + + 2642500.000 + 1154000.000 + + + + + + + + + + + + + + + 20191014 + + + + 11.002-11.001 + + unbekannt + 717.49 + genau + 100 + Kunststoff_Polyethylen + + + + 2643099.000 + 1155003.000 + + + 2642561.986 + 1154527.180 + + + + + + + + + + + + + + + 20191014 + + + + 11.003-11.002 + + unbekannt + 1137.62 + genau + 100 + Kunststoff_Polyethylen + + + + 2643582.000 + 1156033.000 + + + 2643099.000 + 1155003.000 + + + + + + + + + + + + + + + 20191014 + + + + 11.004-11.003 + + unbekannt + 20.00 + genau + 100 + Kunststoff_Polyethylen + + + + 2643582.000 + 1156053.000 + + + 2643582.000 + 1156033.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.070-1.062 + + unbekannt + 947.22 + genau + 1000 + Beton_Spezialbeton + + + + 2645200.000 + 1149950.000 + + + 2646103.000 + 1149720.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.080-1.070 + + unbekannt + 1165.39 + genau + 1000 + Beton_Spezialbeton + + + + 2644125.000 + 1149500.000 + + + 2645200.000 + 1149950.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.090-1.080 + + unbekannt + 1060.95 + ungenau + 1000 + Beton_Spezialbeton + + + + 2643250.000 + 1148900.000 + + + 2644125.000 + 1149500.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.100-1.090 + + unbekannt + 1123.61 + ungenau + 1000 + Beton_Spezialbeton + + + + 2642300.000 + 1148300.000 + + + 2643250.000 + 1148900.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.110.2-1.100 + + unbekannt + 1664.33 + ungenau + 200 + Kunststoff_Polyethylen + + + + 2640900.000 + 1147400.000 + + + 2642300.000 + 1148300.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.110.1-1.100.1 + + unbekannt + 1670.01 + ungenau + 800 + Faserzement + + + + 2640892.002 + 1147409.645 + + + 2642297.031 + 1148312.317 + + + + 0.03 + + + + + + + + + + + + 20191014 + + + + 1.100.1-1.200 + + unbekannt + 1158.27 + ungenau + 800 + Faserzement + + + + 2642297.031 + 1148312.317 + + + 2642824.905 + 1149343.304 + + + + 0.03 + + + + + + + + + + + + 20191014 + + + + 3.025-3.010 + + unbekannt + 2629.68 + genau + 80 + Kunststoff_Polyethylen + + + + 2651878.454 + 1152540.236 + + + 2651276.332 + 1152309.636 + + + 2650328.310 + 1151912.492 + + + 2649482.777 + 1151464.103 + + + + + + + + + + + + + + + 20191014 + + + + 3.010-3.001 + + unbekannt + 2503.80 + ungenau + 250 + Kunststoff_Polyvinilchlorid + + + + 2649482.777 + 1151464.103 + + + 2647196.507 + 1150443.315 + + + + + + + + + + + + + + + 20191014 + + + + 3.001-1.057 + + unbekannt + 1284.28 + unbekannt + 250 + Kunststoff_Polyvinilchlorid + + + + 2647196.507 + 1150443.315 + + + 2646325.000 + 1149500.000 + + + + + + + + + + + + + + + 20191014 + + + + L1-3.025 + + unbekannt + 166.43 + genau + 200 + Kunststoff_Polyethylen + + + + 2652036.243 + 1152593.153 + + + 2651878.454 + 1152540.236 + + + + + + + + + + + + + + 20191014 + + + + L2-3.025 + + unbekannt + 207.33 + genau + 150 + Kunststoff_Polyethylen + + + + 2652058.491 + 1152437.417 + + + 2651878.454 + 1152540.236 + + + + + + + + + + + + + + 20191014 + + + + 1.001-TS0 + + unbekannt + 12.59 + genau + 500 + Beton_Normalbeton + + + + 2646398.800 + 1139799.000 + + + 2646390.000 + 1139790.000 + + + + + + + + + + + + + + + 20191014 + + + + TS0-VB2 + + unbekannt + 30.41 + genau + 500 + Beton_Ortsbeton + + + + 2646390.000 + 1139790.000 + + + 2646345.000 + 1139780.000 + + + + + + + + + + + + + + + 20191014 + + + + TS0-VB1 + + unbekannt + 18.03 + genau + 500 + Beton_Ortsbeton + + + + 2646390.000 + 1139790.000 + + + 2646375.000 + 1139780.000 + + + 2646360.000 + 1139765.000 + + + + + + + + + + + + + + + 20191014 + + + + TS0-VB3 + + unbekannt + 25.00 + genau + 500 + Beton_Ortsbeton + + + + 2646390.000 + 1139790.000 + + + 2646390.000 + 1139765.000 + + + 2646375.000 + 1139750.000 + + + + + + + + + + + + + + + 20191014 + + + + VB1-TS1 + + unbekannt + 10.61 + genau + 500 + Beton_Ortsbeton + + + + 2646360.000 + 1139765.000 + + + 2646345.141 + 1139749.859 + + + 2646337.500 + 1139742.500 + + + + + + + + + + + + + + + 20191014 + + + + VB2-TS1 + + unbekannt + 23.43 + ungenau + 500 + Beton_Ortsbeton + + + + 2646345.000 + 1139780.000 + + + 2646330.046 + 1139764.709 + + + 2646337.500 + 1139742.500 + + + + + + + + + + + + + + + 20191014 + + + + VB3-TS1 + + unbekannt + 23.79 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646375.000 + 1139750.000 + + + 2646360.054 + 1139734.946 + + + 2646337.500 + 1139742.500 + + + + + + + + + + + + + + + 20191014 + + + + TS1-BB + + unbekannt + 3.54 + genau + 500 + Beton_Ortsbeton + + + + 2646337.500 + 1139742.500 + + + 2646335.000 + 1139740.000 + + + 2646325.000 + 1139730.000 + + + + + + + + + + + + + + + 20191014 + + + + BB-AB + + Anstrich_Beschichtung + 14.14 + genau + 800 + Beton_Ortsbeton + + + + 2646325.000 + 1139730.000 + + + 2646315.000 + 1139720.000 + + + 2646305.000 + 1139710.000 + + + 2646290.000 + 1139695.000 + + + + + + + + + + + + + + + 20191014 + + + + AB-KS5 + + Anstrich_Beschichtung + 93.45 + genau + 500 + Beton_Ortsbeton + + + + 2646290.000 + 1139695.000 + + + 2646275.000 + 1139680.000 + + + 2646249.526 + 1139670.613 + + + 2646240.000 + 1139605.000 + + + + + + + + + + + + + + + 20191014 + + + + TS1-TS2 + + unbekannt + genau + 500 + Beton_Ortsbeton + + + + 2646337.500 + 1139742.500 + + + 2646354.550 + 1139729.624 + + + 2646275.000 + 1139665.000 + + + + + + + + + + + + + + + 20191014 + + + + TS2-FBR1 + + unbekannt + unbekannt + 500 + Beton_Ortsbeton + + + + 2646275.000 + 1139665.000 + + + 2646260.000 + 1139660.000 + + + 2646260.000 + 1139645.000 + + + + + + + + + + + + + + + 20191014 + + + + TS2-TS3 + + unbekannt + 15.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646275.000 + 1139665.000 + + + 2646290.000 + 1139665.000 + + + + + + + + + + + + + + + 20191014 + + + + TS2-FBR2 + + unbekannt + 5.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646275.000 + 1139665.000 + + + 2646275.000 + 1139660.000 + + + 2646275.000 + 1139645.000 + + + + + + + + + + + + + + + 20191014 + + + + TS3-FBR3 + + unbekannt + 5.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646290.000 + 1139665.000 + + + 2646290.000 + 1139660.000 + + + 2646290.000 + 1139645.000 + + + + + + + + + + + + + + + 20191014 + + + + TS3-TS4 + + unbekannt + 20.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646290.000 + 1139665.000 + + + 2646310.000 + 1139665.000 + + + + + + + + + + + + + + + 20191014 + + + + TS4-TTK + + unbekannt + 5.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646310.000 + 1139665.000 + + + 2646310.000 + 1139660.000 + + + 2646310.000 + 1139650.000 + + + + + + + + + + + + + + + 20191014 + + + + TS4-TK + + unbekannt + unbekannt + 500 + Beton_Ortsbeton + + + + 2646310.000 + 1139665.000 + + + 2646330.000 + 1139660.000 + + + 2646330.000 + 1139645.000 + + + + + + + + + + + + + + + 20191014 + + + + FBR1-KS2 + + Anstrich_Beschichtung + unbekannt + 500 + Beton_Ortsbeton + + + + 2646260.000 + 1139645.000 + + + 2646260.000 + 1139630.000 + + + 2646275.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + FBR2-KS2 + + Anstrich_Beschichtung + 5.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646275.000 + 1139645.000 + + + 2646275.000 + 1139630.000 + + + 2646275.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + FBR3-KS3 + + Anstrich_Beschichtung + 5.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646290.000 + 1139645.000 + + + 2646290.000 + 1139630.000 + + + 2646290.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + KS3-KS2 + + Anstrich_Beschichtung + 15.00 + genau + 500 + Beton_Ortsbeton + + + + 2646290.000 + 1139625.000 + + + 2646275.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + TTK-KS4 + + unbekannt + 15.00 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646310.000 + 1139650.000 + + + 2646310.000 + 1139640.000 + + + 2646310.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + KS4-KS3 + + Anstrich_Beschichtung + 20.00 + genau + 500 + Beton_Ortsbeton + + + + 2646310.000 + 1139625.000 + + + 2646290.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + TK-KS4 + + unbekannt + 20.62 + unbekannt + 500 + Beton_Ortsbeton + + + + 2646330.000 + 1139645.000 + + + 2646330.000 + 1139630.000 + + + 2646310.000 + 1139625.000 + + + + + + + + + + + + + + + 20191014 + + + + KS2-KS5 + + Anstrich_Beschichtung + 40.31 + genau + 500 + Beton_Ortsbeton + + + + 2646275.000 + 1139625.000 + + + 2646240.000 + 1139605.000 + + + + + + + + + + + + + + + 20191014 + + + + FB-2.001 + + Anstrich_Beschichtung + 30.10 + genau + 200 + Kunststoff_Polyvinilchlorid + + + + 2647996.259 + 1143426.868 + + + 2647997.596 + 1143425.976 + + + 2648002.300 + 1143425.229 + + + 2648000.000 + 1143400.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.062.05-1.070-1.06 + + unbekannt + 34.89 + genau + 150 + Kunststoff_Polyvinilchlorid + + + + 2645366.137 + 1149981.606 + + + 2645382.014 + 1149950.536 + + + + + + + + + + + + + + 20191014 + + + + 1.062.04-1.070-1.06 + + unbekannt + 29.67 + genau + 150 + Kunststoff_Polyvinilchlorid + + + + 2645461.219 + 1149969.721 + + + 2645473.170 + 1149942.569 + + + + + + + + + + + + + + 20191014 + + + + 1.062.031-1.062.03 + + unbekannt + 85.52 + genau + 150 + Kunststoff_Polyvinilchlorid + + + + 2645544.416 + 1149961.798 + + + 2645627.613 + 1149941.989 + + + + + + + + + + + + + + 20191014 + + + + 1.062.03-1.070-1.06 + + unbekannt + 33.10 + genau + 150 + Kunststoff_Polyvinilchlorid + + + + 2645627.613 + 1149941.989 + + + 2645643.084 + 1149912.723 + + + + + + + + + + + + + + 20191014 + + + + 1.070.1-1.070 + + unbekannt + 100.06 + genau + 300 + Kunststoff_Polyvinilchlorid + + + + 2645144.278 + 1150033.109 + + + 2645200.000 + 1149950.000 + + + + + + + + + + + + + + + 20191014 + + + + 1.070.11-1.070.1 + + unbekannt + 125.91 + genau + 200 + Kunststoff_Polyvinilchlorid + + + + 2645259.169 + 1150084.612 + + + 2645144.278 + 1150033.109 + + + + + + + + + + + + + + 20191014 + + + + HA1331 + + unbekannt + 132.68 + genau + unbekannt + + + + 2645352.390 + 1150121.281 + + + 2645344.207 + 1150074.907 + + + 2645259.169 + 1150084.612 + + + + + + + + + + + + + + 20191014 + + + + HA1332 + + unbekannt + 37.90 + genau + unbekannt + + + + 2645265.099 + 1150121.281 + + + 2645260.624 + 1150085.249 + + + 2645259.169 + 1150084.612 + + + + + + + + + + + + + + 20191014 + + + + HA1333 + + unbekannt + 55.85 + unbekannt + unbekannt + + + + 2645189.838 + 1150112.345 + + + 2645197.685 + 1150057.051 + + + + + + + + + + + + + + 20191014 + + + + HA1334 + + unbekannt + 271.18 + unbekannt + unbekannt + + + + 2644896.841 + 1149922.148 + + + 2645144.278 + 1150033.109 + + + + + + + + + + + + + + 20191014 + + + + 1.062.1-1.062 + + unbekannt + 95.79 + genau + 200 + Kunststoff_Polyethylen + + + + 2646043.599 + 1149644.856 + + + 2646103.000 + 1149720.000 + + + + + + + + + + + + + + 20191014 + + + + 1.062.2-1.062 + + unbekannt + 99.47 + genau + 200 + Beton_unbekannt + + + + 2646063.408 + 1149811.250 + + + 2646103.000 + 1149720.000 + + + + + + + + + + + + + + 20191014 + + + + HA1337 + + unbekannt + 66.44 + unbekannt + unbekannt + + + + 2646031.714 + 1149579.487 + + + 2646043.599 + 1149644.856 + + + + + + + + + + + + + + 20191014 + + + + HA1338 + + unbekannt + 69.19 + unbekannt + unbekannt + + + + 2645980.211 + 1149672.588 + + + 2646043.599 + 1149644.856 + + + + + + + + + + + + + + 20191014 + + + + HA1339 + + unbekannt + 65.22 + unbekannt + unbekannt + + + + 2646015.867 + 1149819.174 + + + 2646073.343 + 1149788.353 + + + + + + + + + + + + + + 20191014 + + + + 1.062.02-1.070-1.06 + + unbekannt + 98.73 + genau + unbekannt + + + + 2645593.938 + 1149827.097 + + + 2645643.084 + 1149912.723 + + + + + + + + + + + + + + 20191014 + + + + 1.062.01-1.070-1.06 + + unbekannt + 123.91 + genau + unbekannt + + + + 2645744.485 + 1149783.518 + + + 2645774.199 + 1149848.887 + + + 2645825.587 + 1149857.508 + + + + + + + + + + + + + + 20191014 + + + + VB214003-1.062.02 + + unbekannt + 36.10 + unbekannt + 300 + Beton_Spezialbeton + + + + 2645559.217 + 1149817.193 + + + 2645593.938 + 1149827.097 + + + + + + + + + + + + + + + 20191014 + + + + HA1345 + + unbekannt + 55.18 + unbekannt + unbekannt + + + + 2645574.129 + 1149775.594 + + + 2645593.938 + 1149827.097 + + + + + + + + + + + + + + 20191014 + + + + V1.102-V1.101 + + unbekannt + 110.47 + unbekannt + 150 + Kunststoff_Polyvinilchlorid + + + + 2644809.550 + 1149894.870 + + + 2644771.360 + 1149998.528 + + + + + + + + + + + + + + 20191014 + + + + V1.101-V1.100 + + unbekannt + 75.83 + unbekannt + 200 + Kunststoff_Polyvinilchlorid + + + + 2644771.360 + 1149998.528 + + + 2644839.938 + 1150030.877 + + + + + + + + + + + + + + 20191014 + + + + KS5-0.000 + + unbekannt + genau + 500 + Stahl_rostfrei + 120 + + + + 2646240.000 + 1139605.000 + + + 2645890.000 + 1139276.300 + + + + + + + + + + + + + + + 20191014 + + + + EK2-SH1 + + unbekannt + 9.31 + genau + 250 + Kunststoff_Polyvinilchlorid + + + + 2645200.000 + 1149940.190 + + + 2645200.000 + 1149950.000 + + + 2645200.000 + 1149940.690 + + + 2645200.000 + 1149950.000 + + + + + + + + + + + 2646152.103 + 1150029.620 + + + 0.0 + Right + Half + Leitungskataster + 400 + keine + + + + + + 2646153.130 + 1150029.620 + + + 23.0 + Left + Cap + Werkplan + MW 400 PRB 1972 54.90 7.1 % + + + + + + + 2642561.986 + 1154527.180 + + + 2642500.000 + 1154000.000 + + + + Uebersichtsplan.UeP5 + + + + + + + + + + 20191014 + + + + keiner + WE1 + 20000.00 + Muster AG + Regenueberlauf + unbekannt + keine + unbekannt + + + + 1914.000 + 1913.950 + scharfkantig + + + + + + + + + 20191014 + + + + keiner + WE2.1 + 5000.00 + intern + unbekannt + keine + unbekannt + + + + + 2202.600 + 2202.550 + rund + + + + + + + + + 20191014 + + + + keiner + WE2.2 + 5000.00 + Regenueberlauf + unbekannt + keine + unbekannt + + + 2202.800 + 2202.750 + rechteckig + + + + + + + + + 20191014 + + + + Elektromotor + Pumpe1 + Förderix + intern + 20.000 + unbekannt + keine + fest + + + trocken + vertikal + Kreiselpumpe + 3044.000 + 3040.000 + + + + + + + + + 20191014 + + + + Elektromotor + Pumpe2 + Pumpix + intern + senden_empfangen + geregelt + verstellbar + + + + nass + vertikal + Kreiselpumpe + 1909.500 + 1911.000 + + + + + + + + + 20191014 + + + + Pumpe121 + + nass + Kreiselpumpe + + + + + + + + + 20191014 + + + + keiner + Transferdatensatz, keine realen Werte + Leapingwehr + 1500.00 + Muster AG + intern + 0.660 + unbekannt + keine + 545.30 + unbekannt + + + 0.20 + 0.30 + Rechteck + + + + + + + + + 20191014 + + + + Gletschermühle AG + 2.000 + + 101A + + + + + + 2644910.635 + 1149909.461 + + + 2644852.233 + 1149883.334 + + + 2644836.864 + 1149918.683 + + + 2644895.266 + 1149944.810 + + + 2644910.635 + 1149909.461 + + + + + + + + + + + + + + 20191014 + + + + Gletschermühle GmbH + 2.000 + 162 + + + + + + 2644775.388 + 1149924.830 + + + 2644803.052 + 1149858.744 + + + 2644766.167 + 1149843.375 + + + 2644738.502 + 1149907.925 + + + 2644775.388 + 1149924.830 + + + + + + + + + + + + + + 20191014 + + + + ARA Energienutzung + + + 1 + + + + + + 2646265.000 + 1139775.000 + + + 2646265.000 + 1139735.000 + + + 2646225.000 + 1139735.000 + + + 2646225.000 + 1139775.000 + + + 2646265.000 + 1139775.000 + + + + + + ARA Aletsch + + + + + + + + + 20191014 + + + + Schlammbehandlung + + + + + + + + 2646260.000 + 1139715.000 + + + 2646260.000 + 1139685.000 + + + 2646200.000 + 1139685.000 + + + 2646200.000 + 1139715.000 + + + 2646260.000 + 1139715.000 + + + + + + ARA Aletsch + + + + + + + + + 20191014 + + + + Steuerungszentrale + + + + + + + + 2646375.000 + 1139575.000 + + + 2646375.000 + 1139550.000 + + + 2646335.000 + 1139550.000 + + + 2646335.000 + 1139575.000 + + + 2646375.000 + 1139575.000 + + + + + + + + 2646335.000 + 1139560.000 + + + ARA Aletsch + + + + + + + + + 20191014 + + + + ZZZ AO1264 + + 223 + + + + + + + + + 20191014 + + + + Reservoir + 5.000 + + + 2645300.000 + 1153200.000 + + + Berg + + + + + + + + + 20191014 + + + + Bemerkung + FL1059 + 0.000 + + befestigt + DachflaecheIndustrieundGewerbebetriebe + 10 + + + + + + 2644895.266 + 1149944.810 + + + 2644910.635 + 1149909.461 + + + 2644852.233 + 1149883.334 + + + 2644836.864 + 1149918.683 + + + 2644895.266 + 1149944.810 + + + + + + + + + + + + + + 20191014 + + + + FL1060 + + befestigt + UmschlagundLagerplaetze + 10 + + + + + + 2644895.266 + 1149944.810 + + + 2644882.971 + 1149974.011 + + + 2644919.857 + 1149990.917 + + + 2644965.964 + 1149884.871 + + + 2644835.327 + 1149829.543 + + + 2644810.737 + 1149889.482 + + + 2644843.528 + 1149903.355 + + + 2644852.233 + 1149883.334 + + + 2644910.635 + 1149909.461 + + + 2644895.266 + 1149944.810 + + + + + + + + + + + + + + 20191014 + + + + FL1061 + + befestigt + Erschliessungs_Sammelstrassen + 10 + + + + + + 2644835.327 + 1149829.543 + + + 2644835.327 + 1149828.006 + + + 2644858.381 + 1149760.382 + + + 2644844.548 + 1149752.698 + + + 2644803.052 + 1149858.744 + + + 2644775.388 + 1149924.830 + + + 2644738.502 + 1150037.024 + + + 2644753.871 + 1150043.172 + + + 2644810.737 + 1149889.482 + + + 2644835.327 + 1149829.543 + + + + + + + + + + + + + + 20191014 + + + + Ältester Brunnen der Stadt, unter Denkmalschutz + Zähringerbrunne + 3.000 + + + + 2646118.000 + 1149720.000 + + + Albert Heim Platz + + + + + + + + + 20191014 + + + + + 1 + 0.0000 + 0.0000 + + + + + + + + + + 20191014 + + + + + 2 + 0.5000 + 0.0000 + + + + + + + + + + 20191014 + + + + + 3 + 0.6000 + 0.2000 + + + + + + + + + + 20191014 + + + + + 4 + 1.0000 + 0.2000 + + + + + + + + + + 20191014 + + + + + 5 + 1.0000 + 2.0000 + + + + + + + + + + 20191014 + + + + + 6 + -1.0000 + 2.0000 + + + + + + + + + + 20191014 + + + + + 7 + -1.0000 + 0.2000 + + + + + + + + + + 20191014 + + + + + 8 + -0.5000 + 0.2000 + + + + + + + + + + 20191014 + + + + + 9 + -0.4000 + 0.0000 + + + + + + + + + + 20191014 + + + + + 10 + 0.0000 + 0.0000 + + + + + + + + + + 20191014 + + + + Pumpe1 + unbekannt + + Pumpe + 2100.00 + 2023 + 12 + + + + + + + + + + 20191014 + + + + Schwallspuelung + nicht_notwendig + + Schwallspuelung + 21000.00 + 2023 + + + + + + + + + 20191014 + + + + gezügelt von Klasse ElektromechanischeAusruestung + EA1006 + nicht_notwendig + + Sieb + 5600.50 + 2010 + + + + + + + + + 20191014 + + + + gezügelt von Klasse ElektromechanischeAusruestung + Tauchwand1 + unbekannt + + Tauchwand + 100.5 + 2004 + + + + + + + + + 20191014 + + + + Rueckstauklappe + nicht_notwendig + + Rueckstauklappe + 1256.56 + 2020 + + + + + + + + + 20191014 + + + + 1 + Transferdatensatz, keine realen Werte + WE1 + + 3.7 + Streichwehr_hochgezogen + einzeln + 22.5 + 15.5 + ja + Ist + 76 + + + + + + + + + + + + + + 20191026 + + + + 1 + Transferdatensatz, keine realen Werte + WE2 + + 3.7 + Streichwehr_hochgezogen + einzeln + 22.5 + 15.5 + ja + Ist + 126 + + + + + + + + + + 20201003 + + + Stammkarte Regenueberlauf ARA in See, Beispiel für Testdaten + + GEP_Traegerschaft + Elisabeth Muster + keine_Steuerung + + + + + + + + + + + + + + 20201003 + + + Stammkarte Regenueberlauf Beispiel für Testdaten + + GEP_Traegerschaft + Elisabeth Muster + keine_Steuerung + + + + + + + + + + 20201003 + + + Stammkarte Duekerkammer Beispiel für Testdaten + + GEP_Traegerschaft + Elisabeth Muster + keine_Steuerung + + + + + + + + + 20201003 + + + Stammkarte Regenueberlaufbecken - Regenbecken_Fangbecken Testdaten + + GEP_Traegerschaft + Hans Beispiel + Verbundsteuerung + + + + + + + + + + 20220819 + + + Stammkarte Einleitstelle Testdaten + + GEP_Traegerschaft + Stefan Bios + + + + + + + + + + + 20220819 + + + Stammkarte Einleitstelle Testdaten fehlerhaft an SAA Knoten angehängt + + GEP_Traegerschaft + Stefan Bios + + + + + + + + + + + + 20201018 + + + + + nicht_angeschlossen + ja + Testdaten für INTERLIS, ohne Gewähr für fachliche Richtigkeit + Testgebäudegruppe + + 18 + unbekannt + Landwirtschaftsbetrieb + + + + 2647813.500 + 1140716.000 + + + ja + 20230531 + noch nicht vorhanden + + + + + + + + + + + + + 20201018 + + + 5154 + + + + + + 20201018 + + + Test Landwirtschaftsbetrieb + wahrscheinlich + Sohn in Ausbildung + 2 + 1982 + Eigenbetrieb + 234 + 2 + 2 + + 2 + 2 + Sanierung_bevorstehend + 121 + 121 + 11 + 8 + 5 + ja + + + + + + 20201018 + + + 2 + 1 + + Guelleaustrag + 120 + + + + + + + 20201018 + + + + 1920 + + + Meier Grube + 12000.00 + 2006 + privat + 1.50 + kurzfristig + unter Aletsch + in_Betrieb + 0.00 + 1920 + + 12000.00 + zugaenglich + + + abflussloseGrube + + + + + + 20201018 + + + + + nicht_angeschlossen + nein + Testdaten für INTERLIS, ohne Gewähr für fachliche Richtigkeit + Hammerhütte SAC + + 12 + nein + andere + + + + 2641142.000 + 1141649.750 + + + ja + 20250531 + noch nicht vorhanden + + + + + + + + + + 20201018 + + + 2 + 1 + + keiner + + + + + + + + + 20201018 + + + + 1988 + Z0 + V2000 + 2010 + privat + 1.00 + keiner + Hammerhütte + in_Betrieb + 0.00 + 1988 + + + zugaenglich + + + Versickerungsschacht + beschriftet + 5.00 + unwesentliche + keiner + unzugaenglich + + unbekannt + wasserdicht + + + + + + + + 20201018 + + + + + nicht_angeschlossen + nein + Testdaten für INTERLIS, ohne Gewähr für fachliche Richtigkeit + Weiler Susten B + + 7 + nein + Feriengebaeude + + + + 2647467.100 + 1141825.300 + + + ja + + noch nicht vorhanden + + + + + 20201018 + + + + + nicht_angeschlossen + nein + Testdaten für INTERLIS, ohne Gewähr für fachliche Richtigkeit + Weiler Susten A + + 5 + ja + Feriengebaeude + + + 2647487.100 + 1141815.300 + + + ja + + noch nicht vorhanden + + + + + + + + + + + + + + + 20201018 + + + + + + oeffentlicheKanalisation + + + + + + + + + 20201018 + + + + 2007 + Z0 + KLARA Susten + 2037 + privat + 3.00 + keiner + Susten + in_Betrieb + 13700.00 + + + + zugaenglich + + + 12355 + TDU1222.4 + ja + SequencingBatchReactor + + + + + + 20201018 + + + + 1988 + Z0 + Einleitstelle KLARA + + + 5.00 + + Susten + in_Betrieb + + + + 0.00 + zugaenglich + + + nicht_gewaesserrelevant + + + + + + + + 20201018 + + + + + nicht_angeschlossen + nein + Testdaten für INTERLIS, ohne Gewähr für fachliche Richtigkeit + Oberhauser + + 3 + nein + Feriengebaeude + + + 2647967.300 + 1141725.400 + + + nein + + noch nicht vorhanden + + + + + + + + + + + 20201018 + + + + + keiner + keiner + + + + + + + + + 20201018 + + + + 2017 + Z0 + Oberhauser + 2035 + privat + 5.00 + keiner + + in_Betrieb + 0.00 + + + + + + + Komposttoilette + + + + + + + 20201026 + + + + RB_Fangbecken + 120 + 150 + + + 22.3 + 10.1 + 12.1 + + + + 10 + 120 + + + + + + + 20201026 + + + nachschlagen, ob Bezeichnung richtig gemäss Wegleitung + Stammdaten prüfen + M1 + 20201026 + 10000 + Prüfung der vorhandenen Stammdaten, als Basis für Ausschreibungen + + 2020 + GEP_Bearbeitung + + + M0 + in_Bearbeitung + + Verweis auf andere Massnahmen (Bezeichnung) oder Arbeiten, Hinweis auf Grundlagen in denen die Massnahmen näher erläutert werden, wie z.B. auf die entsprechenden GEP-Teilprojekte + + + + + + + 20201026 + + + nachschlagen, ob Bezeichnung richtig gemäss Wegleitung + Einleitstelle auf Eintrag von Fremdstoffen prüfen + M2 + 20200105 + 300 + Meldung über Fremdstoffe im Gewässer + 2020 + 2020 + Massnahme_im_Gewaesser + + + M0 + erledigt + + + 2648245.000 + 1143045.000 + + + Hinweis auf Grundlagen in denen die Massnahmen näher erläutert werden, wie z.B. auf die entsprechenden GEP-Teilprojekte + + + + + + + + + 19870312 + + + + siehe Erhaltungsereignis + M3 + 19850623 + 10000 + Reparatur notwendig + 1987 + 1986 + Erhaltung_Renovierung_Reparatur + + + M0 + erledigt + + + 2648245.000 + 1143045.000 + + + Baukostenabrechnung + + + + + + + 20201026 + + + + 2.001 SP + + + 2648000.000 + 1143400.500 + + + + + + + + 20201026 + + + + Versickerungsbereich + + + + + + 2641319.115 + 1146382.945 + + + 2636320.537 + 1146275.217 + + + 2635560.911 + 1147145.112 + + + 2640494.533 + 1150081.071 + + + 2641594.397 + 1151400.909 + + + 2641751.521 + 1153160.692 + + + 2639383.742 + 1156492.102 + + + 2640521.928 + 1157672.837 + + + 2647416.519 + 1156832.559 + + + 2651876.457 + 1154139.359 + + + 2653621.650 + 1148903.780 + + + 2653837.106 + 1143194.197 + + + 2650389.811 + 1137613.888 + + + 2642628.981 + 1137557.101 + + + 2643825.551 + 1139019.576 + + + 2644359.771 + 1140999.332 + + + 2644988.265 + 1143544.733 + + + 2645113.964 + 1145084.543 + + + 2644359.771 + 1146278.682 + + + 2641326.434 + 1146110.163 + + + 2641319.115 + 1146382.945 + + + + + + maessig + + + + diff --git a/plugin/teksi_interlis_tool/tests/data/test-dataset-organisations.xtf b/plugin/teksi_interlis_tool/tests/data/test-dataset-organisations.xtf new file mode 100644 index 0000000..a8fe730 --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/data/test-dataset-organisations.xtf @@ -0,0 +1,100 @@ + + + + + + + + + + dataset generated by VSA, Organisationen für Testdatensatz 2020_1 last update 20231201/ 20240807 + + + + + 20240807 + Amt für Umwelt + + AfU + Kanton + aktiv + + + + 20191014 + + Privat + + Privat + aktiv + + + + + 20191014 + Oekologiebüro + + Privat + aktiv + CHE102441189 + + + 20201003 + GEP Büro + + Privat + aktiv + CHE102441189 + + + 20240807 + Abwasserverband Aletsch + + AV Aletsch + Abwasserverband + aktiv + CHE102441189 + + + 20191014 + SBU + + Privat + aktiv + CHE114536626 + + + 20191014 + VSA + + Privat + aktiv + CHE106189304 + + + 20191014 + Gemeinde A + 344 + Privat + aktiv + + + + 20191014 + Gemeinde B + 345 + Gemeinde + aktiv + + + + 20191014 + Gemeinde C + 346 + Gemeinde + aktiv + + + + + diff --git a/plugin/teksi_interlis_tool/tests/test_interlis.py b/plugin/teksi_interlis_tool/tests/test_interlis.py new file mode 100644 index 0000000..b23d4f4 --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/test_interlis.py @@ -0,0 +1,221 @@ +import logging +import os +import re +import sys +import xml.etree.ElementTree as ET + +from qgis.testing import start_app, unittest +from teksi_interlis_tool.interlis import config +from teksi_interlis_tool.interlis.interlis_importer_exporter import ( + InterlisImporterExporter, +) +from teksi_interlis_tool.interlis.utils.ili2db import InterlisTools +from teksi_interlis_tool.utils.database_utils import DatabaseUtils + +# Display logging in unittest output +logger = logging.getLogger() +logger.setLevel(logging.DEBUG) +handler = logging.StreamHandler(sys.stdout) +handler.setLevel(logging.DEBUG) +logger.addHandler(handler) + + +start_app() + +PG_PORT = os.getenv("TWW_PG_PORT", 5432) + +MINIMAL_DATASET_DSS = "minimal-dataset-DSS.xtf" +MINIMAL_DATASET_ORGANISATION_ARBON_ONLY = "minimal-dataset-organisation-arbon-only.xtf" +MINIMAL_DATASET_SIA405_ABWASSER = "minimal-dataset-SIA405-ABWASSER.xtf" +MINIMAL_DATASET_KEK_MANHOLE_DAMAGE = "minimal-dataset-VSA-KEK-manhole-damage.xtf" +TEST_DATASET_DSS = "test-dataset-DSS.xtf" +TEST_DATASET_ORGANISATIONS = "test-dataset-organisations.xtf" + + +class TestInterlis(unittest.TestCase): + def _get_data_filename(self, name): + return os.path.join( + os.path.dirname(__file__), + "data", + name, + ) + + def _get_output_filename(self, name): + + directory = os.path.join(os.path.dirname(__file__), "output") + if not os.path.exists(directory): + os.makedirs(directory) + + return os.path.join(directory, name) + + @staticmethod + def _get_xtf_object(xtf_file, topicname, classname, tid): + # from xml file + tree = ET.parse(xtf_file) + root = tree.getroot() + + def get_namespace(element): + m = re.match(r"\{.*\}", element.tag) + return m.group(0) if m else "" + + namespace = get_namespace(root) + + interlis_objects = root.findall( + "./{0}DATASECTION/{0}{1}/{0}{1}.{2}".format(namespace, topicname, classname) + ) + + for interlis_object in interlis_objects: + xml_tid = interlis_object.attrib.get("TID", None) + + if xml_tid == tid: + return interlis_object + + return None + + def setUp(self): + DatabaseUtils.databaseConfig.PGHOST = "db" + DatabaseUtils.databaseConfig.PGDATABASE = "tww" + DatabaseUtils.databaseConfig.PGUSER = "postgres" + DatabaseUtils.databaseConfig.PGPASS = "postgres" + DatabaseUtils.databaseConfig.PGPORT = str(PG_PORT) + + def test_minimal_import_export(self): + # Import organisation + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_ORGANISATION_ARBON_ONLY) + interlisImporterExporter = InterlisImporterExporter() + interlisImporterExporter.interlis_import(xtf_file_input=xtf_file_input) + + result = DatabaseUtils.fetchone( + "SELECT identifier FROM tww_od.organisation WHERE obj_id='ch20p3q400001497';" + ) + self.assertIsNotNone(result) + self.assertEqual(result[0], "Arbon") + + # Import minimal sia405 + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_SIA405_ABWASSER) + interlisImporterExporter = InterlisImporterExporter() + interlisImporterExporter.interlis_import(xtf_file_input=xtf_file_input) + + result = DatabaseUtils.fetchone( + "SELECT obj_id FROM tww_od.reach WHERE obj_id='ch000000RE000001';" + ) + self.assertIsNotNone(result) + + # Import minimal dss + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_DSS) + interlisImporterExporter = InterlisImporterExporter() + interlisImporterExporter.interlis_import(xtf_file_input=xtf_file_input) + + result = DatabaseUtils.fetchone( + "SELECT obj_id FROM tww_od.pipe_profile WHERE obj_id='ch000000PP000001';" + ) + self.assertIsNotNone(result) + + # Import minimal kek + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_KEK_MANHOLE_DAMAGE) + interlisImporterExporter = InterlisImporterExporter() + interlisImporterExporter.interlis_import(xtf_file_input=xtf_file_input) + + result = DatabaseUtils.fetchone( + "SELECT fk_maintenance_event FROM tww_od.re_maintenance_event_wastewater_structure WHERE fk_wastewater_structure='ch000000WS000001';" + ) + self.assertIsNotNone(result) + self.assertEqual(result[0], "fk11abk6EX000002") + + # Export minimal sia405 + export_xtf_file = self._get_output_filename("export_minimal_dataset_sia405") + interlisImporterExporter.interlis_export( + xtf_file_output=self._get_output_filename(export_xtf_file), + export_models=[config.MODEL_NAME_SIA405_ABWASSER], + logs_next_to_file=True, + ) + + # Check exported TID + exported_xtf_filename = self._get_output_filename( + f"{export_xtf_file}_{config.MODEL_NAME_SIA405_ABWASSER}.xtf" + ) + interlis_object = self._get_xtf_object( + exported_xtf_filename, config.TOPIC_NAME_SIA405_ABWASSER, "Haltung", "ch000000RE000001" + ) + self.assertIsNotNone(interlis_object) + + # Export minimal dss + export_xtf_file = self._get_output_filename("export_minimal_dataset_dss") + interlisImporterExporter.interlis_export( + xtf_file_output=self._get_output_filename(export_xtf_file), + export_models=[config.MODEL_NAME_DSS], + logs_next_to_file=True, + ) + + # Check exported TID + exported_xtf_filename = self._get_output_filename( + f"{export_xtf_file}_{config.MODEL_NAME_DSS}.xtf" + ) + interlis_object = self._get_xtf_object( + exported_xtf_filename, config.TOPIC_NAME_DSS, "Rohrprofil", "ch000000PP000001" + ) + self.assertIsNotNone(interlis_object) + + # Export minimal kek + export_xtf_file = self._get_output_filename("export_minimal_dataset_kek") + interlisImporterExporter.interlis_export( + xtf_file_output=self._get_output_filename(export_xtf_file), + export_models=[config.MODEL_NAME_VSA_KEK], + logs_next_to_file=True, + ) + + # Check exported TID + exported_xtf_filename = self._get_output_filename( + f"{export_xtf_file}_{config.MODEL_NAME_VSA_KEK}.xtf" + ) + interlis_object = self._get_xtf_object( + exported_xtf_filename, config.TOPIC_NAME_KEK, "Untersuchung", "fk11abk6EX000002" + ) + self.assertIsNotNone(interlis_object) + + def test_dss_dataset_import_export(self): + # Import organisation + xtf_file_input = self._get_data_filename(TEST_DATASET_ORGANISATIONS) + interlisImporterExporter = InterlisImporterExporter() + interlisImporterExporter.interlis_import(xtf_file_input=xtf_file_input) + + # Import minimal dss + xtf_file_input = self._get_data_filename(TEST_DATASET_DSS) + interlisImporterExporter = InterlisImporterExporter() + interlisImporterExporter.interlis_import(xtf_file_input=xtf_file_input) + + # Export minimal dss + export_xtf_file = self._get_output_filename("export_minimal_dss_dataset.xtf") + interlisImporterExporter.interlis_export( + xtf_file_output=self._get_output_filename(export_xtf_file), + export_models=[config.MODEL_NAME_DSS], + logs_next_to_file=True, + ) + + def test_get_xtf_models(self): + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_DSS) + models = InterlisTools.get_xtf_models(xtf_file=xtf_file_input) + self.assertCountEqual(models, [config.MODEL_NAME_DSS]) + + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_SIA405_ABWASSER) + models = InterlisTools.get_xtf_models(xtf_file=xtf_file_input) + self.assertCountEqual(models, [config.MODEL_NAME_SIA405_ABWASSER]) + + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_ORGANISATION_ARBON_ONLY) + models = InterlisTools.get_xtf_models(xtf_file=xtf_file_input) + self.assertCountEqual(models, [config.MODEL_NAME_SIA405_BASE_ABWASSER]) + + xtf_file_input = self._get_data_filename(TEST_DATASET_DSS) + models = InterlisTools.get_xtf_models(xtf_file=xtf_file_input) + self.assertCountEqual( + models, + ["Units", "Base", config.MODEL_NAME_SIA405_BASE_ABWASSER, config.MODEL_NAME_DSS], + ) + + xtf_file_input = self._get_data_filename(TEST_DATASET_ORGANISATIONS) + models = InterlisTools.get_xtf_models(xtf_file=xtf_file_input) + self.assertCountEqual(models, [config.MODEL_NAME_SIA405_BASE_ABWASSER]) + + xtf_file_input = self._get_data_filename(MINIMAL_DATASET_KEK_MANHOLE_DAMAGE) + models = InterlisTools.get_xtf_models(xtf_file=xtf_file_input) + self.assertCountEqual(models, [config.MODEL_NAME_VSA_KEK]) diff --git a/plugin/teksi_interlis_tool/tests/test_interlis_various.py b/plugin/teksi_interlis_tool/tests/test_interlis_various.py new file mode 100644 index 0000000..cc1b92b --- /dev/null +++ b/plugin/teksi_interlis_tool/tests/test_interlis_various.py @@ -0,0 +1,10 @@ +import unittest + +from teksi_interlis_tool.utils.plugin_utils import logger + + +class TestVarious(unittest.TestCase): + def test_logger(self): + logger.info("Test info") + + logger.warning("Test with stacklevel=2", stacklevel=2) diff --git a/plugin/teksi_interlis_tool/tools/__init__.py b/plugin/teksi_interlis_tool/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/tools/twwmaptooladdfeature.py b/plugin/teksi_interlis_tool/tools/twwmaptooladdfeature.py new file mode 100644 index 0000000..7286af2 --- /dev/null +++ b/plugin/teksi_interlis_tool/tools/twwmaptooladdfeature.py @@ -0,0 +1,514 @@ +# ----------------------------------------------------------- +# +# TEKSI Wastewater +# +# Copyright (C) 2014 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, print to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +""" +Some map tools for digitizing features +""" + +import math + +from qgis.core import ( + NULL, + Qgis, + QgsFeature, + QgsFeatureRequest, + QgsGeometry, + QgsPoint, + QgsPointXY, + QgsSettings, + QgsSnappingConfig, + QgsTolerance, + QgsWkbTypes, +) +from qgis.gui import ( + QgisInterface, + QgsAttributeEditorContext, + QgsMapCanvas, + QgsMapCanvasSnappingUtils, + QgsMapTool, + QgsMapToolAdvancedDigitizing, + QgsMessageBar, + QgsRubberBand, + QgsVertexMarker, +) +from qgis.PyQt.QtCore import Qt, pyqtSignal +from qgis.PyQt.QtGui import QColor, QCursor +from qgis.PyQt.QtWidgets import ( + QApplication, + QDialog, + QDialogButtonBox, + QGridLayout, + QLabel, + QLineEdit, +) + +from ..utils.twwlayermanager import TwwLayerManager + + +class TwwRubberBand3D(QgsRubberBand): + def __init__(self, map_canvas: QgsMapCanvas, geometry_type): + QgsRubberBand.__init__(self, map_canvas, geometry_type) + self.points = [] + + def addPoint3D(self, point): + assert isinstance(point, QgsPoint) + QgsRubberBand.addPoint(self, QgsPointXY(point.x(), point.y())) + # Workaround crash with QGIS 3.10.2 (https://github.com/qgis/QGIS/issues/34557) + new_point = QgsPoint(point.x(), point.y(), point.z(), point.m(), point.wkbType()) + self.points.append(new_point) + + def reset3D(self): + QgsRubberBand.reset(self) + self.points = [] + + def asGeometry3D(self): + def ensure_z(z): + if math.isnan(z): + return QgsSettings().value( + "/qgis/digitizing/default_z_value", Qgis.DEFAULT_Z_COORDINATE + ) + return z + + wkt = ( + "LineStringZ(" + + ", ".join([f"{p.x()} {p.y()} {ensure_z(p.z())}" for p in self.points]) + + ")" + ) + return QgsGeometry.fromWkt(wkt) + + +class TwwMapToolAddFeature(QgsMapToolAdvancedDigitizing): + """ + Base class for adding features + """ + + def __init__(self, iface: QgisInterface, layer): + QgsMapToolAdvancedDigitizing.__init__(self, iface.mapCanvas(), iface.cadDockWidget()) + self.iface = iface + self.canvas = iface.mapCanvas() + self.layer = layer + self.rubberband = TwwRubberBand3D(iface.mapCanvas(), layer.geometryType()) + self.rubberband.setColor(QColor("#ee5555")) + self.rubberband.setWidth(1) + self.temp_rubberband = QgsRubberBand(iface.mapCanvas(), layer.geometryType()) + self.temp_rubberband.setColor(QColor("#ee5555")) + self.temp_rubberband.setWidth(1) + self.temp_rubberband.setLineStyle(Qt.DotLine) + + def activate(self): + """ + When activating the map tool + """ + QgsMapToolAdvancedDigitizing.activate(self) + self.canvas.setCursor(QCursor(Qt.CrossCursor)) + + def deactivate(self): + """ + On deactivating the map tool + """ + QgsMapToolAdvancedDigitizing.deactivate(self) + self.canvas.unsetCursor() + + # pylint: disable=no-self-use + def isZoomTool(self): + """ + This is no zoom tool + """ + return False + + # =========================================================================== + # Events + # =========================================================================== + + def cadCanvasReleaseEvent(self, event): + """ + Called when a mouse button is + :param event: + :return: + """ + if event.button() == Qt.RightButton: + self.right_clicked(event) + else: + self.left_clicked(event) + + def left_clicked(self, event): + """ + When the canvas is left clicked we add a new point to the rubberband. + :type event: QMouseEvent + """ + mousepos = self.canvas.getCoordinateTransform().toMapCoordinates( + event.pos().x(), event.pos().y() + ) + self.rubberband.addPoint(mousepos) + self.temp_rubberband.reset() + + def right_clicked(self, _): + """ + On a right click we create a new feature from the existing rubberband and show the add + dialog + """ + f = QgsFeature(self.layer.fields()) + f.setGeometry(self.rubberband.asGeometry()) + dlg = self.iface.getFeatureForm(self.layer, f) + dlg.setMode(QgsAttributeEditorContext.AddFeatureMode) + dlg.exec_() + self.rubberband.reset3D() + self.temp_rubberband.reset() + + def cadCanvasMoveEvent(self, event): + """ + When the mouse is moved the rubberband needs to be updated + :param event: The coordinates etc. + """ + + # When a generated event arrives it's a QMoveEvent... No idea why, but this prevents from an exception + try: + QgsMapToolAdvancedDigitizing.cadCanvasMoveEvent(self, event) + mousepos = event.mapPoint() + self.temp_rubberband.movePoint(mousepos) + self.mouse_move(event) + + except TypeError: + pass + + def mouse_move(self, event): + pass + + +class TwwMapToolAddReach(TwwMapToolAddFeature): + """ + Create a new reach with the mouse. + Will snap to wastewater nodes for the first and last point and auto-connect + these. + """ + + first_snapping_match = None + last_snapping_match = None + last_feature_attributes = None + + def __init__(self, iface: QgisInterface, layer): + TwwMapToolAddFeature.__init__(self, iface, layer) + self.snapping_marker = None + self.node_layer = TwwLayerManager.layer("vw_wastewater_node") + assert self.node_layer is not None + self.reach_layer = TwwLayerManager.layer("vw_tww_reach") + assert self.reach_layer is not None + self.setAdvancedDigitizingAllowed(True) + self.setAutoSnapEnabled(True) + + layer_snapping_configs = [ + {"layer": self.node_layer, "mode": QgsSnappingConfig.Vertex}, + {"layer": self.reach_layer, "mode": QgsSnappingConfig.VertexAndSegment}, + ] + self.snapping_configs = [] + self.snapping_utils = QgsMapCanvasSnappingUtils(self.iface.mapCanvas()) + + for lsc in layer_snapping_configs: + config = QgsSnappingConfig() + config.setMode(QgsSnappingConfig.AdvancedConfiguration) + config.setEnabled(True) + settings = QgsSnappingConfig.IndividualLayerSettings( + True, lsc["mode"], 10, QgsTolerance.Pixels + ) + config.setIndividualLayerSettings(lsc["layer"], settings) + self.snapping_configs.append(config) + + def left_clicked(self, event): + """ + The mouse is clicked: snap to neary points which are on the wastewater node layer + and update the rubberband + :param event: The coordinates etc. + """ + point3d, match = self.snap(event) + if self.rubberband.numberOfVertices() == 0: + self.first_snapping_match = match + self.last_snapping_match = match + self.rubberband.addPoint3D(point3d) + self.temp_rubberband.reset() + self.temp_rubberband.addPoint(QgsPointXY(point3d.x(), point3d.y())) + + if self.snapping_marker is not None: + self.iface.mapCanvas().scene().removeItem(self.snapping_marker) + self.snapping_marker = None + + def mouse_move(self, event): + _, match = self.snap(event) + # snap indicator + if not match.isValid(): + if self.snapping_marker is not None: + self.iface.mapCanvas().scene().removeItem(self.snapping_marker) + self.snapping_marker = None + return + + # TODO QGIS 3: see if vertices can be removed + + # we have a valid match + if self.snapping_marker is None: + self.snapping_marker = QgsVertexMarker(self.iface.mapCanvas()) + self.snapping_marker.setPenWidth(3) + self.snapping_marker.setColor(QColor(Qt.magenta)) + + if match.hasVertex(): + if match.layer(): + icon_type = QgsVertexMarker.ICON_BOX # vertex snap + else: + icon_type = QgsVertexMarker.ICON_X # intersection snap + else: + icon_type = QgsVertexMarker.ICON_DOUBLE_TRIANGLE # must be segment snap + self.snapping_marker.setIconType(icon_type) + self.snapping_marker.setCenter(match.point()) + + def snap(self, event): + """ + Snap to nearby points on the wastewater node layer which may be used as connection + points for this reach. + :param event: The mouse event + :return: The snapped position in map coordinates + """ + + for config in self.snapping_configs: + self.snapping_utils.setConfig(config) + match = self.snapping_utils.snapToMap(QgsPointXY(event.originalMapPoint())) + if match.isValid(): + return QgsPoint(match.point()), match + + # if no match, snap to all layers (according to map settings) and try to grab Z + match = ( + self.iface.mapCanvas().snappingUtils().snapToMap(QgsPointXY(event.originalMapPoint())) + ) + if match.isValid() and match.hasVertex(): + if match.layer(): + req = QgsFeatureRequest(match.featureId()) + f = next(match.layer().getFeatures(req)) + assert f.isValid() + (ok, vertex_id) = f.geometry().vertexIdFromVertexNr(match.vertexIndex()) + assert ok + point = f.geometry().constGet().vertexAt(vertex_id) + assert isinstance(point, QgsPoint) + return point, match + else: + return QgsPoint(match.point()), match + + return QgsPoint(event.originalMapPoint()), match + + def right_clicked(self, _): + """ + The party is over, the reach digitized. Create a feature from the rubberband and + show the feature form. + """ + self.temp_rubberband.reset() + + if self.snapping_marker is not None: + self.iface.mapCanvas().scene().removeItem(self.snapping_marker) + self.snapping_marker = None + + if len(self.rubberband.points) >= 2: + fields = self.layer.fields() + f = QgsFeature(fields) + if not self.last_feature_attributes: + self.last_feature_attributes = [None] * fields.count() + for idx, field in enumerate(fields): + if field.name() in [ + "clear_height", + "material", + "ch_usage_current", + "ch_function_hierarchic", + "ch_function_hydraulic", + "horizontal_positioning", + "ws_status", + "ws_year_of_construction", + "ws_fk_owner", + "ws_fk_operator", + "inside_coating", + "fk_pipe_profile", + "remark", + ]: + f.setAttribute(idx, self.last_feature_attributes[idx]) + else: + # try client side default value first + v = self.layer.defaultValue(idx, f) + if v != NULL: + f.setAttribute(idx, v) + else: + f.setAttribute(idx, self.layer.dataProvider().defaultValue(idx)) + + f.setGeometry(self.rubberband.asGeometry3D()) + + snapping_results = { + "from": self.first_snapping_match, + "to": self.last_snapping_match, + } + for dest, match in list(snapping_results.items()): + level_field_index = self.layer.fields().indexFromName(f"rp_{dest}_level") + pt_idx = 0 if dest == "from" else -1 + if match.isValid() and match.layer() in ( + self.node_layer, + self.reach_layer, + ): + request = QgsFeatureRequest(match.featureId()) + network_element = next(match.layer().getFeatures(request)) + assert network_element.isValid() + # set the related network element + field = self.layer.fields().indexFromName( + f"rp_{dest}_fk_wastewater_networkelement" + ) + f.setAttribute(field, network_element.attribute("obj_id")) + # assign level if the match is a node or if we have 3D from snapping + if match.layer() == self.node_layer: + level = network_element["bottom_level"] + f.setAttribute(level_field_index, level) + elif self.rubberband.points[pt_idx].z() != 0: + level = self.rubberband.points[pt_idx].z() + level = level if not math.isnan(level) else NULL + f.setAttribute(level_field_index, level) + + dlg = self.iface.getFeatureForm(self.layer, f) + dlg.setMode(QgsAttributeEditorContext.AddFeatureMode) + dlg.exec_() + self.last_feature_attributes = dlg.feature().attributes() + + self.rubberband.reset3D() + + +class TwwMapToolDigitizeDrainageChannel(QgsMapTool): + """ + This is used to digitize a drainage channel. + + It lets you digitize two points and then creates a polygon based on these two points + by adding an orthogonal offset at each side. + + Input: + + x==============x + + Output: + + ---------------- + | | + ---------------- + + Usage: + Connect to the signals deactivated() and geometryDigitized() + If geometryDigitized() is called you can use the member variable geometry + which will contain a rectangle polygon + deactivated() will be emited after a right click + """ + + geometryDigitized = pyqtSignal() + + def __init__(self, iface, layer): + QgsMapTool.__init__(self, iface.mapCanvas()) + self.iface = iface + self.canvas = iface.mapCanvas() + self.layer = layer + self.rubberband = QgsRubberBand(iface.mapCanvas(), QgsWkbTypes.LineGeometry) + self.rubberband.setColor(QColor("#ee5555")) + self.rubberband.setWidth(2) + self.firstPoint = None + self.messageBarItem = None + self.geometry = None + + def activate(self): + """ + Map tool is activated + """ + QgsMapTool.activate(self) + self.canvas.setCursor(QCursor(Qt.CrossCursor)) + msgtitle = self.tr("Digitizing Drainage Channel") + msg = self.tr("Digitize start and end point. Rightclick to abort.") + self.messageBarItem = QgsMessageBar.createMessage(msgtitle, msg) + self.iface.messageBar().pushItem(self.messageBarItem) + + def deactivate(self): + """ + Map tool is deactivated + """ + QgsMapTool.deactivate(self) + self.iface.messageBar().popWidget(self.messageBarItem) + try: + self.iface.mapCanvas().scene().removeItem(self.rubberband) + del self.rubberband + except AttributeError: + # Called repeatedly... bail out + pass + self.canvas.unsetCursor() + + def canvasMoveEvent(self, event): + """ + Mouse is moved: Update rubberband + :param event: coordinates etc. + """ + mousepos = event.mapPoint() + self.rubberband.movePoint(mousepos) + + def canvasReleaseEvent(self, event): + """ + Canvas is released. This means: + * start digitizing + * stop digitizing (create a rectangle + * if the Ctrl-modifier is pressed, ask for the rectangle width + :param event: coordinates etc. + """ + if event.button() == Qt.RightButton: + self.deactivate() + else: + mousepos = self.canvas.getCoordinateTransform().toMapCoordinates( + event.pos().x(), event.pos().y() + ) + self.rubberband.addPoint(mousepos) + if self.firstPoint: # If the first point was set before, we are doing the second one + lp1 = self.rubberband.asGeometry().asPolyline()[0] + lp2 = self.rubberband.asGeometry().asPolyline()[1] + width = 0.2 + if QApplication.keyboardModifiers() & Qt.ControlModifier: + dlg = QDialog() + dlg.setLayout(QGridLayout()) + dlg.layout().addWidget(QLabel(self.tr("Enter width"))) + txt = QLineEdit("0.2") + dlg.layout().addWidget(txt) + bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + dlg.layout().addWidget(bb) + bb.accepted.connect(dlg.accept) + bb.rejected.connect(dlg.reject) + if dlg.exec_(): + try: + width = float(txt.text()) + except ValueError: + width = 0.2 + + length = math.sqrt(math.pow(lp1.x() - lp2.x(), 2) + math.pow(lp1.y() - lp2.y(), 2)) + xd = lp2.x() - lp1.x() + yd = lp2.y() - lp1.y() + + pt1 = QgsPointXY(lp1.x() + width * (yd / length), lp1.y() - width * (xd / length)) + pt2 = QgsPointXY(lp1.x() - width * (yd / length), lp1.y() + width * (xd / length)) + pt3 = QgsPointXY(lp2.x() - width * (yd / length), lp2.y() + width * (xd / length)) + pt4 = QgsPointXY(lp2.x() + width * (yd / length), lp2.y() - width * (xd / length)) + + self.geometry = QgsGeometry.fromPolygonXY([[pt1, pt2, pt3, pt4, pt1]]) + + self.geometryDigitized.emit() + + self.firstPoint = mousepos diff --git a/plugin/teksi_interlis_tool/tools/twwmaptools.py b/plugin/teksi_interlis_tool/tools/twwmaptools.py new file mode 100644 index 0000000..4801f31 --- /dev/null +++ b/plugin/teksi_interlis_tool/tools/twwmaptools.py @@ -0,0 +1,926 @@ +# ----------------------------------------------------------- +# +# TEKSI Wastewater +# +# Copyright (C) 2012 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, print to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +""" +This module implements several map tools for TWW +""" + +import logging + +from qgis.core import ( + Qgis, + QgsFeature, + QgsFeatureRequest, + QgsGeometry, + QgsPointLocator, + QgsPointXY, + QgsSnappingConfig, + QgsTolerance, + QgsWkbTypes, +) +from qgis.gui import ( + QgisInterface, + QgsMapCanvasSnappingUtils, + QgsMapTool, + QgsRubberBand, + QgsVertexMarker, +) +from qgis.PyQt.QtCore import QCoreApplication, QSettings, Qt, pyqtSignal +from qgis.PyQt.QtGui import QColor, QCursor +from qgis.PyQt.QtWidgets import ( + QAction, + QApplication, + QCheckBox, + QDialog, + QDialogButtonBox, + QFormLayout, + QMenu, +) + +from ..utils.twwlayermanager import TwwLayerManager +from .twwnetwork import TwwGraphManager +from .twwprofile import ( + TwwProfile, + TwwProfileNodeElement, + TwwProfileReachElement, + TwwProfileSpecialStructureElement, +) + + +class CounterMatchFilter(QgsPointLocator.MatchFilter): + def __init__(self): + super().__init__() + self.matches = list() + + def acceptMatch(self, match): + self.matches.append(match) + return True + + +class TwwMapTool(QgsMapTool): + """ + Base class for all the map tools + """ + + highlightedPoints = [] + logger = logging.getLogger(__name__) + snapper = None + + def __init__(self, iface: QgisInterface, button, network_analyzer: TwwGraphManager = None): + QgsMapTool.__init__(self, iface.mapCanvas()) + self.canvas = iface.mapCanvas() + self.cursor = QCursor(Qt.CrossCursor) + self.button = button + self.msgBar = iface.messageBar() + self.network_analyzer = network_analyzer + + settings = QSettings() + current_profile_color = settings.value("/TWW/CurrentProfileColor", "#FF9500") + + self.rubberBand = QgsRubberBand(self.canvas) + self.rubberBand.setColor(QColor(current_profile_color)) + self.rubberBand.setWidth(3) + + def activate(self): + """ + Gets called when the tool is activated + """ + QgsMapTool.activate(self) + self.canvas.setCursor(self.cursor) + self.button.setChecked(True) + + def deactivate(self): + """ + Gets called whenever the tool is deactivated directly or indirectly + """ + QgsMapTool.deactivate(self) + self.button.setChecked(False) + + # pylint: disable=no-self-use + def isZoomTool(self): + """ + Will return if this is a zoom tool + """ + return False + + def setCursor(self, cursor): + """ + Set the cursor for this maptool + """ + self.cursor = QCursor(cursor) + + # =========================================================================== + # Events + # =========================================================================== + + def canvasReleaseEvent(self, event): + """ + Issues rightClicked and leftClicked events + """ + if event.button() == Qt.RightButton: + self.rightClicked(event) + else: + self.leftClicked(event) + + def canvasDoubleClickEvent(self, event): + """ + Forwards to doubleClicked + """ + try: + self.doubleClicked(event) + except AttributeError: + pass + + # =========================================================================== + # Snapping + # =========================================================================== + def init_snapper(self): + """ + Initialize snapper + """ + if not self.snapper: + self.node_layer = self.network_analyzer.getNodeLayer() + self.snapper = QgsMapCanvasSnappingUtils(self.canvas) + config = QgsSnappingConfig() + config.setMode(QgsSnappingConfig.AdvancedConfiguration) + config.setEnabled(True) + ils = QgsSnappingConfig.IndividualLayerSettings( + True, QgsSnappingConfig.VertexAndSegment, 16, QgsTolerance.Pixels + ) + config.setIndividualLayerSettings(self.node_layer, ils) + self.snapper.setConfig(config) + + def snap_point(self, event, show_menu: bool = True) -> QgsPointLocator.Match: + """ + Snap to a point on this network + :param event: A QMouseEvent + :param show_menu: determines if a menu shall be shown on a map if several matches are available + """ + clicked_point = event.pos() + + if not self.snapper: + self.init_snapper() + + match_filter = CounterMatchFilter() + match = self.snapper.snapToMap(clicked_point, match_filter) + + if not match.isValid() or len(match_filter.matches) == 1: + return match + elif len(match_filter.matches) > 1: + matches_by_id = {match.featureId(): match for match in match_filter.matches} + node_features = self.network_analyzer.getFeaturesById( + self.network_analyzer.getNodeLayer(), list(matches_by_id.keys()) + ) + + # Filter wastewater nodes + filtered_features = { + fid: node_features.featureById(fid) + for fid in node_features.asDict() + if node_features.attrAsUnicode(node_features.featureById(fid), "type") + == "wastewater_node" + } + + # Only one wastewater node left: return this + if len(filtered_features) == 1: + matches = ( + match + for match in match_filter.matches + if match.featureId() == next(iter(filtered_features.keys())) + ) + return next(matches) + + # Still not sure which point to take? + # Are there no wastewater nodes filtered? Let the user choose from the reach points + if not filtered_features: + filtered_features = node_features.asDict() + + # Ask the user which point he wants to use + if not show_menu: + return QgsPointLocator.Match() + + actions = dict() + + menu = QMenu(self.canvas) + + for fid, feature in filtered_features.items(): + try: + title = ( + feature.attribute("description") + " (" + feature.attribute("obj_id") + ")" + ) + except TypeError: + title = " (" + feature.attribute("obj_id") + ")" + actions[QAction(title, menu)] = matches_by_id[fid] + + for action in sorted(actions.keys(), key=lambda o: o.text()): + menu.addAction(action) + + clicked_action = menu.exec_(self.canvas.mapToGlobal(event.pos())) + + if clicked_action is not None: + return actions[clicked_action] + + return QgsPointLocator.Match() + + +class TwwProfileMapTool(TwwMapTool): + """ + The map tool used for PROFILE + + Allows to find the shortest path between several nodes. + """ + + profileChanged = pyqtSignal(object) + profile = TwwProfile() + segmentOffset = 0 + + selectedPathPoints = [] + pathPolyline = [] + + def __init__(self, canvas, button, network_analyzer): + TwwMapTool.__init__(self, canvas, button, network_analyzer) + settings = QSettings() + + helper_line_color = settings.value("/TWW/HelperLineColor", "#FFD900") + highlight_color = settings.value("/TWW/HighlightColor", "#40FF40") + + # Init rubberband to visualize current status + self.rbHelperLine = QgsRubberBand(self.canvas) + self.rbHelperLine.setColor(QColor(helper_line_color)) + self.rbHelperLine.setWidth(2) + + self.rbHighlight = QgsRubberBand(self.canvas) + self.rbHighlight.setColor(QColor(highlight_color)) + self.rbHighlight.setWidth(5) + + self.profile.setRubberband(self.rbHighlight) + + self.saveTool = None + + def setActive(self): + """ + activates this map tool + """ + self.saveTool = self.canvas.mapTool() + self.canvas.setMapTool(self) + + def deactivate(self): + """ + Called whenever this map tool is deactivated. + Used to clean up code + """ + TwwMapTool.deactivate(self) + self.rubberBand.reset() + self.rbHelperLine.reset() + self.selectedPathPoints = [] + self.pathPolyline = [] + + def findPath(self, start_point, end_point): + """ + Tries to find the shortest path between pStart and pEnd. + If it finds a path: + * The path is visualized with a QgsRubberband + * The profile plot is updated to represent the current path + + @param start_point: The id of the start point of the path + @param end_point: The id of the end point of the path + """ + QApplication.setOverrideCursor(Qt.WaitCursor) + # try: + (vertices, edges) = self.network_analyzer.shortestPath(start_point, end_point) + self.appendProfile(vertices, edges) + # except: + # pass + QApplication.restoreOverrideCursor() + if len(vertices) > 0: + return True + else: + return False + + # pylint: disable=too-many-locals + def appendProfile(self, vertices, edges): + """ + Appends to the current profile + + @param vertices: A collection of vertices to append + @param edges: A collection of edges which connect the vertices + """ + self.logger.debug("Append profile") + self.logger.info(" * " + repr(len(vertices)) + " vertices") + for v in vertices: + self.logger.debug(" *" + repr(v)) + self.logger.info(" * " + repr(len(edges)) + " edges") + for e in edges: + self.logger.debug(" *" + repr(e)) + + # Fetch all the needed edges in one batch + edge_layer = self.network_analyzer.getEdgeLayer() + edge_ids = [edge["feature"] for p1, p2, edge in edges] + + edge_features = self.network_analyzer.getFeaturesById(edge_layer, edge_ids) + + # We need some additional nodes, where we need to interpolate... + interpolate_nodes_from = [ + edge_features.attrAsUnicode(feat, "from_obj_id_interpolate") + for feat in list(edge_features.asDict().values()) + ] + interpolate_nodes_to = [ + edge_features.attrAsUnicode(feat, "to_obj_id_interpolate") + for feat in list(edge_features.asDict().values()) + ] + additional_ids = [self.network_analyzer.vertexIds[node] for node in interpolate_nodes_from] + additional_ids += [self.network_analyzer.vertexIds[node] for node in interpolate_nodes_to] + + # Now, fetch the nodes we need + node_layer = self.network_analyzer.getNodeLayer() + node_ids = vertices + additional_ids + node_features = self.network_analyzer.getFeaturesById(node_layer, node_ids) + + if len(vertices) > 1: + self.rubberBand.reset() + + elem = TwwProfileNodeElement(vertices[0], node_features, self.segmentOffset) + self.profile.addElement(vertices[0], elem) + + for p1, p2, edge in edges: + from_offset = self.segmentOffset + to_offset = self.segmentOffset + edge["weight"] + + if "reach" == edge["objType"]: + if self.profile.hasElement(edge["baseFeature"]): + self.profile[edge["baseFeature"]].addSegment( + p1, + p2, + edge["feature"], + node_features, + edge_features, + from_offset, + to_offset, + ) + else: + elem = TwwProfileReachElement( + p1, + p2, + edge["feature"], + node_features, + edge_features, + from_offset, + to_offset, + ) + self.profile.addElement(elem.obj_id, elem) + + elif "special_structure" == edge["objType"]: + if self.profile.hasElement(edge["baseFeature"]): + self.profile[edge["baseFeature"]].addSegment( + p1, + p2, + edge["feature"], + node_features, + edge_features, + from_offset, + to_offset, + ) + else: + elem = TwwProfileSpecialStructureElement( + p1, + p2, + edge["feature"], + node_features, + edge_features, + from_offset, + to_offset, + ) + self.profile.addElement(elem.obj_id, elem) + + elem = TwwProfileNodeElement(p2, node_features, to_offset) + self.profile.addElement(p2, elem) + + self.segmentOffset = to_offset + + # Create rubberband geometry + for feat_id in edge_ids: + self.pathPolyline.extend(edge_features[feat_id].geometry().asPolyline()) + + self.rubberBand.addGeometry(QgsGeometry.fromPolylineXY(self.pathPolyline), node_layer) + self.profileChanged.emit(self.profile) + return True + else: + return False + + def canvasMoveEvent(self, event): + """ + Mouse moved: update helper line + + @param event: The mouse event with coordinates and all + """ + if self.selectedPathPoints: + self.rbHelperLine.reset() + for point in self.selectedPathPoints: + self.rbHelperLine.addPoint(point[1]) + mouse_pos = self.canvas.getCoordinateTransform().toMapCoordinates( + event.pos().x(), event.pos().y() + ) + self.rbHelperLine.addPoint(mouse_pos) + + def rightClicked(self, _): + """ + Cancel any ongoing path selection + + @param event: The mouse event with coordinates and all + """ + self.selectedPathPoints = [] + self.pathPolyline = [] + self.rbHelperLine.reset() + self.profile.reset() + self.segmentOffset = 0 + + def leftClicked(self, event): + """ + Select startpoint / intermediate point / endpoint + + @param event: The mouse event with coordinates and all + """ + match = self.snap_point(event) + + if match.isValid(): + if self.selectedPathPoints: + pf = self.findPath(self.selectedPathPoints[-1][0], match.featureId()) + if pf: + self.selectedPathPoints.append((match.featureId(), QgsPointXY(match.point()))) + else: + msg = self.msgBar.createMessage("No path found") + self.msgBar.pushWidget(msg, Qgis.Info) + else: + self.selectedPathPoints.append((match.featureId(), QgsPointXY(match.point()))) + + +class TwwTreeMapTool(TwwMapTool): + """ + The map tool used to find TREES (upstream or downstream) + """ + + treeChanged = pyqtSignal(list, list) + + def __init__(self, canvas, button, network_analyzer): + TwwMapTool.__init__(self, canvas, button, network_analyzer) + + self.direction = "downstream" + self.saveTool = None + + def setDirection(self, direction): + """ + Set the direction to track the graph. + :param direction: Can be 'upstream' or 'downstream' + """ + self.direction = direction + + def getTree(self, node_id: str): + """ + Does the work. Tracks the graph up- or downstream. + :param node_id: The node from which the tracking should be started + """ + QApplication.setOverrideCursor(Qt.WaitCursor) + upstream = self.direction == "upstream" + + self.rubberBand.reset() + + nodes, edges = self.network_analyzer.getTree(node_id, upstream) + polylines = self.network_analyzer.getEdgeGeometry([edge[2]["feature"] for edge in edges]) + + # Fix for QGIS < 2.0 + filtered_polylines = [pl for pl in polylines if pl] + + self.rubberBand.addGeometry( + QgsGeometry.fromMultiPolylineXY(filtered_polylines), + self.network_analyzer.getNodeLayer(), + ) + + self.treeChanged.emit(nodes, edges) + + QApplication.restoreOverrideCursor() + + def canvasMoveEvent(self, event): + """ + Whenever the mouse is moved update the rubberband and the snapping. + :param event: QMouseEvent with coordinates + """ + match = self.snap_point(event, False) + + for marker in self.highlightedPoints: + self.canvas.scene().removeItem(marker) + + self.highlightedPoints = [] + + if match.isValid(): + marker = QgsVertexMarker(self.canvas) + marker.setCenter(match.point()) + marker.setColor(QColor("#FFFF33")) + marker.setIconSize(10) + marker.setIconType(QgsVertexMarker.ICON_X) + marker.setPenWidth(2) + self.highlightedPoints.append(marker) + + def rightClicked(self, _): + """ + Resets the rubberband on right clickl + :param _: QMouseEvent + """ + self.rubberBand.reset() + + def leftClicked(self, event): + """ + Snaps to the network graph + :param event: QMouseEvent + """ + match = self.snap_point(event) + + if match.isValid(): + self.getTree(match.featureId()) + + def setActive(self): + """ + Activates this map tool + """ + self.saveTool = self.canvas.mapTool() + self.canvas.setMapTool(self) + + def deactivate(self): + """ + Deactivates this map tool. Removes the rubberband etc. + """ + TwwMapTool.deactivate(self) + self.rubberBand.reset() + + for marker in self.highlightedPoints: + self.canvas.scene().removeItem(marker) + + self.highlightedPoints = [] + + +class TwwAreaSnapper(QgsMapCanvasSnappingUtils): + def __init__(self, map_canvas): + QgsMapCanvasSnappingUtils.__init__(self, map_canvas) + self.filter = CounterMatchFilter() + + # This manages the priority of the snapping layers. The earlier in the list, the higher the priority. + # Can be used to prefer points (wastewater nodes) over lines (reaches) + self.layer_priority = list() + + def snapToMap(self, pt): + self.filter.matches = list() + match = QgsMapCanvasSnappingUtils.snapToMap(self, pt, self.filter) + + def sorter(match): + layer = match.layer() + try: + return self.layer_priority.index(layer) + except ValueError: + return 0 + + layer_tolerances = dict() + for layer_config in self.layers(): + layer_tolerances[layer_config.layer] = QgsTolerance.toleranceInProjectUnits( + layer_config.tolerance, + layer_config.layer, + self.mapSettings(), + layer_config.unit, + ) + + matches = sorted(self.filter.matches, key=sorter) + matches = [m for m in matches if m.distance() < layer_tolerances[m.layer()]] + + if matches: + match = matches[0] + elif self.config().mode() == QgsSnappingConfig.AdvancedConfiguration: + for layer in self.layers(): + if layer.type & QgsPointLocator.Area: + loc = self.locatorForLayer(layer.layer) + results = loc.pointInPolygon(pt) + if results: + return results[0] + + return match + + +class TwwMapToolConnectNetworkElements(QgsMapTool): + """ + This map tool connects wastewater networkelements. + + It works on two lists of layers: + source layers with fields with a foreign key to a networkelement + target layers which depict networkelements (reaches and network nodes) + + The tool will snap to source layers first and once one is chosen to a target layer. + + It will then ask which field(s) should be connected and perform the update on the database + """ + + def __init__(self, iface, action): + QgsMapTool.__init__(self, iface.mapCanvas()) + self.iface = iface + self.action = action + + self.rbline = QgsRubberBand(self.iface.mapCanvas(), QgsWkbTypes.LineGeometry) + self.rbline.setColor(QColor("#f4530e")) + self.rbline.setWidth(3) + self.rbmarkers = QgsRubberBand(self.iface.mapCanvas(), QgsWkbTypes.PointGeometry) + self.rbmarkers.setColor(QColor("#f4530e")) + self.rbmarkers.setIconSize(6) + + self.source_snapper = TwwAreaSnapper(self.iface.mapCanvas()) + self.target_snapper = TwwAreaSnapper(self.iface.mapCanvas()) + + self.source_feature = QgsFeature() + self.rb_source_feature = QgsRubberBand(self.iface.mapCanvas()) + self.rb_source_feature.setColor(QColor("#88f49e79")) + self.rb_source_feature.setWidth(3) + self.target_feature = QgsFeature() + self.rb_target_feature = QgsRubberBand(self.iface.mapCanvas()) + self.rb_target_feature.setColor(QColor("#f49e79")) + self.rb_target_feature.setWidth(3) + + def activate(self): + """ + Called by QGIS whenever the tool is activated. + """ + + def is_closer_to_start_of_edge(source, target): + feature = next(source.layer().getFeatures(QgsFeatureRequest(source.featureId()))) + distance_from_start = feature.geometry().lineLocatePoint( + QgsGeometry.fromPointXY(source.point()) + ) + length = feature.geometry().length() + + return distance_from_start < length / 2 + + # A dict of layers + # and for each layer the fields to use as foreign key + # as well as the possible target layers + # Reaches can be connected to reaches and nodes + # Catchment areas only to nodes + self.network_element_sources = { + TwwLayerManager.layer("vw_tww_reach"): { + "fields": [ + { + "id": "rp_from_fk_wastewater_networkelement", + "name": QCoreApplication.translate( + "TwwMapToolConnectNetworkElements", "Reach Point From" + ), + "filter": lambda source, target: target.layer() + != TwwLayerManager.layer("vw_tww_reach"), + "is_checked": lambda source, target: is_closer_to_start_of_edge( + source, target + ), + }, + { + "id": "rp_to_fk_wastewater_networkelement", + "name": QCoreApplication.translate( + "TwwMapToolConnectNetworkElements", "Reach Point To" + ), + "is_checked": lambda source, target: not is_closer_to_start_of_edge( + source, target + ), + }, + ], + "target_layers": [ + TwwLayerManager.layer("vw_wastewater_node"), + TwwLayerManager.layer("vw_tww_reach"), + ], + }, + TwwLayerManager.layer("catchment_area"): { + "fields": [ + { + "id": "fk_wastewater_networkelement_rw_current", + "name": QCoreApplication.translate( + "TwwMapToolConnectNetworkElements", "Rainwater current" + ), + }, + { + "id": "fk_wastewater_networkelement_rw_planned", + "name": QCoreApplication.translate( + "TwwMapToolConnectNetworkElements", "Rainwater planned" + ), + }, + { + "id": "fk_wastewater_networkelement_ww_current", + "name": QCoreApplication.translate( + "TwwMapToolConnectNetworkElements", "Wastewater current" + ), + }, + { + "id": "fk_wastewater_networkelement_ww_planned", + "name": QCoreApplication.translate( + "TwwMapToolConnectNetworkElements", "Wastewater planned" + ), + }, + ], + "target_layers": [TwwLayerManager.layer("vw_wastewater_node")], + }, + } + + self.setSnapLayers(self.source_snapper, list(self.network_element_sources.keys())) + + self.reset() + + self.action.setChecked(True) + + self.iface.mapCanvas().setCursor(QCursor(Qt.CrossCursor)) + + def setSnapLayers(self, snapper, layers): + config = QgsSnappingConfig() + config.setMode(QgsSnappingConfig.AdvancedConfiguration) + config.setEnabled(True) + + for layer in layers: + if layer: + ils = QgsSnappingConfig.IndividualLayerSettings( + True, QgsSnappingConfig.VertexAndSegment, 16, QgsTolerance.Pixels + ) + config.setIndividualLayerSettings(layer, ils) + + layer.destroyed.connect(self.deactivate) + + snapper.setConfig(config) + snapper.layer_priority = layers + + def canvasMoveEvent(self, event): + """ + When the mouse moves, update the rubberbands. + """ + pt = event.originalMapPoint() + snap_match = self.snapper.snapToMap(pt) + + if snap_match.isValid(): + if snap_match.type() != QgsPointLocator.Area: + pt = snap_match.point() + self.matchpoint = pt + + if self.source_match: + # There is already a source feature : snap to target feature + # candidates + if self.target_feature.id() != snap_match.featureId(): + self.target_feature = self.get_feature_for_match(snap_match) + self.rb_target_feature.setToGeometry( + self.target_feature.geometry(), snap_match.layer() + ) + self.rb_target_feature.show() + self.rbmarkers.movePoint(pt) + else: + # Snapped to source feature, update source feature rubber band + # and target layer snapper + if self.source_feature.id() != snap_match.featureId(): + self.source_feature = self.get_feature_for_match(snap_match) + self.rb_source_feature.setToGeometry( + self.source_feature.geometry(), snap_match.layer() + ) + self.setSnapLayers( + self.target_snapper, + self.network_element_sources[snap_match.layer()]["target_layers"], + ) + self.rb_source_feature.show() + self.rbmarkers.movePoint(pt, 0) + self.rbmarkers.show() + else: + self.rbmarkers.hide() + if self.source_match: + self.rb_target_feature.hide() + else: + self.rb_source_feature.hide() + + self.rbline.movePoint(pt) + + self.snapresult = snap_match + + def canvasReleaseEvent(self, event): + """ + On a click update the rubberbands and the snapping results if it's a left click. Reset if it's a right click. + """ + if event.button() == Qt.LeftButton: + if self.snapresult.isValid(): + if self.source_match: + self.connect_features(self.source_match, self.snapresult) + else: + self.rbline.show() + self.rbline.addPoint(self.matchpoint) + self.source_match = self.snapresult + self.snapper = self.target_snapper + else: + self.reset() + + def deactivate(self): + """ + Called by QGIS whenever this tool is deactivated. + """ + self.reset() + self.action.setChecked(False) + + def reset(self): + """ + Resets the tool to a pristine state + """ + self.source_match = None + self.rbline.hide() + self.rbline.reset() + self.rbmarkers.hide() + self.rbmarkers.reset(QgsWkbTypes.PointGeometry) + self.rbmarkers.addPoint(QgsPointXY()) + self.snapresult = None + self.source_match = None + self.snapper = self.source_snapper + self.source_feature = QgsFeature() + self.target_feature = QgsFeature() + self.rb_source_feature.reset() + self.rb_target_feature.reset() + + def get_feature_for_match(self, match): + """ + Get the feature for a snapping result + @param match: The QgsPointLocator.SnapMatch object + @return: A feature + """ + return next(match.layer().getFeatures(QgsFeatureRequest().setFilterFid(match.featureId()))) + + def connect_features(self, source, target): + """ + Connects the source feature with the target feature. + + @param source: A QgsPointLocator.Match object. Its foreign key will be updated. + A dialog will be opened which asks the user for which foreign key(s) he wants to update. + @param target: A QgsPointLocator.Match object. This feature will be used as link target. + Its obj_id attribute will be used as primary key. + """ + dlg = QDialog(self.iface.mainWindow()) + dlg.setWindowTitle(self.tr("Select properties to connect")) + dlg.setLayout(QFormLayout()) + + properties = list() + + for prop in self.network_element_sources[source.layer()]["fields"]: + if "filter" in prop.keys(): + if not prop["filter"](source, target): + continue + cbx = QCheckBox(prop["name"]) + cbx.setObjectName(prop["id"]) + + if "is_checked" in prop.keys(): + cbx.setChecked(prop["is_checked"](source, target)) + properties.append(cbx) + dlg.layout().addWidget(cbx) + + btn_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + dlg.layout().addWidget(btn_box) + btn_box.accepted.connect(dlg.accept) + btn_box.rejected.connect(dlg.reject) + + source_feature = self.get_feature_for_match(source) + target_feature = self.get_feature_for_match(target) + + if dlg.exec_(): + for cbx in properties: + if cbx.isChecked(): + source_feature[cbx.objectName()] = target_feature["obj_id"] + if not source.layer().isEditable(): + self.iface.messageBar().pushMessage( + "TWW", + self.tr('Layer "{layername}" is not in edit mode').format( + layername=source.layer().name() + ), + Qgis.Warning, + 5, + ) + elif source.layer().updateFeature(source_feature): + self.iface.messageBar().pushMessage( + "TWW", + self.tr("Connected {} to {}").format( + source_feature["identifier"], target_feature["identifier"] + ), + Qgis.Info, + 5, + ) + else: + self.iface.messageBar().pushMessage( + "TWW", self.tr("Error connecting features"), Qgis.Warning, 5 + ) + + self.reset() diff --git a/plugin/teksi_interlis_tool/tools/twwnetwork.py b/plugin/teksi_interlis_tool/tools/twwnetwork.py new file mode 100644 index 0000000..d89efcb --- /dev/null +++ b/plugin/teksi_interlis_tool/tools/twwnetwork.py @@ -0,0 +1,449 @@ +# ----------------------------------------------------------- +# +# Profile +# Copyright (C) 2012 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this progsram; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +""" +Manages a graph of a wastewater network +""" + +import copyreg +import re +import time + +# pylint: disable=no-name-in-module +from collections import defaultdict + +import networkx as nx +from qgis.core import NULL, Qgis, QgsGeometry, QgsMessageLog, QgsPointXY +from qgis.PyQt.QtCore import QObject, Qt, pyqtSignal + +from ..utils.qt_utils import OverrideCursor + + +class TwwGraphManager(QObject): + """ + Manages a graph + """ + + edge_layer = None + edge_layer_id = -1 + nodeLayer = None + nodeLayerId = -1 + dirty = True + graph = None + vertexIds = {} + nodesOnStructure = defaultdict(list) + # Logs performance of graph creation + timings = [] + + message_emitted = pyqtSignal(str, str, Qgis.MessageLevel) + + def __init__(self): + QObject.__init__(self) + + def setReachLayer(self, reach_layer): + """ + Set the reach layer (edges) + """ + self.edge_layer = reach_layer + self.dirty = True + + if reach_layer: + self.edge_layer_id = reach_layer.id() + else: + self.edge_layer_id = 0 + + if self.nodeLayer and self.edge_layer: + self.createGraph() + + def setNodeLayer(self, node_layer): + """ + Set the node layer + """ + self.dirty = True + + self.nodeLayer = node_layer + + if node_layer: + self.nodeLayerId = node_layer.id() + + else: + self.nodeLayerId = 0 + + if self.nodeLayer and self.edge_layer: + self.createGraph() + + def _addVertices(self): + """ + Initializes the graph with the vertices from the node layer + """ + node_provider = self.nodeLayer.dataProvider() + + features = node_provider.getFeatures() + + # Add all vertices + for feat in features: + fid = feat.id() + + obj_id = feat["obj_id"] + obj_type = feat["type"] + + try: + vertex = feat.geometry().asPoint() + except ValueError: + # TODO Add to problem log + pass + self.graph.add_node(fid, point=vertex, objType=obj_type, objId=obj_id) + + self.vertexIds[str(obj_id)] = fid + + self._profile("add vertices") + + def _addEdges(self): + """ + Initializes the graph with the edges + """ + # Add all edges (reach) + reach_provider = self.edge_layer.dataProvider() + + features = reach_provider.getFeatures() + + # Loop through all reaches + for feat in features: + try: + obj_id = feat["obj_id"] + obj_type = feat["type"] + from_obj_id = feat["from_obj_id"] + to_obj_id = feat["to_obj_id"] + + length = feat["length_calc"] + + pt_id1 = self.vertexIds[from_obj_id] + pt_id2 = self.vertexIds[to_obj_id] + + self.graph.add_edge( + pt_id1, + pt_id2, + weight=length, + feature=feat.id(), + baseFeature=obj_id, + objType=obj_type, + ) + except KeyError as e: + print(e) + + self._profile("add edges") + + def refresh(self): + """ + Refreshes the network graph. It will force a refresh of the materialized views in the database and then reload + and recreate the graph. + """ + with OverrideCursor(Qt.WaitCursor): + transaction = self.nodeLayer.dataProvider().transaction() + temporary_edit_session = False + if not transaction: + self.nodeLayer.startEditing() + temporary_edit_session = True + transaction = self.nodeLayer.dataProvider().transaction() + + if not transaction: + self.message_emitted.emit( + self.tr("Error"), + self.tr("Could not initialize transaction"), + Qgis.Critical, + ) + return + + query_template = "SELECT tww_app.network_refresh_network_simple();" + res, error = transaction.executeSql(query_template) + if not res: + self.message_emitted.emit(self.tr("Error"), error, Qgis.Critical) + else: + self.message_emitted.emit( + self.tr("Success"), + self.tr("Network successfully updated"), + Qgis.Success, + ) + + if temporary_edit_session: + self.nodeLayer.commitChanges() + + # recreate networkx graph + self.graph.clear() + self.createGraph() + + def _profile(self, name): + """ + Adds a performance profile snapshot with the given name + """ + spenttime = 0 + if self.timings: + spenttime = time.process_time() - self.timings[-1][1] + self.timings.append((name, spenttime)) + + # Creates a network graph + def createGraph(self): + """ + Create a graph + """ + self._profile("create graph") + # try: + self.vertexIds = {} + self.nodesOnStructure = defaultdict(list) + self._profile("initiate dicts") + self.graph = nx.DiGraph() + + self._profile("initiate graph") + + self._addVertices() + self._addEdges() + + self.print_profile() + self.dirty = False + + def getNodeLayer(self): + """ + Getter for the node layer + """ + return self.nodeLayer + + def getEdgeLayer(self): + """ + Getter for the reach layer + :return: + """ + return self.edge_layer + + def getNodeLayerId(self): + """ + Getter for the node layer's id + """ + return self.nodeLayerId + + def getReachLayerId(self): + """ + Getter for the reach layer's id + """ + return self.edge_layer_id + + def shortestPath(self, start_point, end_point): + """ + Finds the shortest path from the start point + to the end point + :param start_point: The start node + :param end_point: The end node + :return: A (path, edges) tuple + """ + if self.dirty: + self.createGraph() + + try: + path = nx.algorithms.dijkstra_path(self.graph, start_point, end_point) + edges = [(u, v, self.graph.edges[u, v]) for (u, v) in zip(path[0:], path[1:])] + + p = (path, edges) + + except nx.NetworkXNoPath: + print("no path found") + p = ([], []) + + return p + + def getTree(self, node, upstream=False): + """ + Get + :param node: A start node + :param upstream: Should the graph be reversed (upstream search) + :return: A list of edges + """ + if self.dirty: + self.createGraph() + + # fix point pickle + def pickle_point(p): + return QgsPointXY, ( + p.x(), + p.y(), + ) + + copyreg.pickle(QgsPointXY, pickle_point) + + if upstream: + my_graph = self.graph.reverse() + else: + my_graph = self.graph + + # Returns pred, weight + pred, _ = nx.bellman_ford_predecessor_and_distance(my_graph, node) + edges = [(v[0], u, my_graph.edges[v[0], u]) for (u, v) in list(pred.items()) if v] + nodes = [ + my_graph.nodes[n] + for n in set(list(pred.keys()) + [v[0] for v in list(pred.values()) if v]) + if n is not None + ] + + return nodes, edges + + def getEdgeGeometry(self, edges): + """ + Get the geometry for some edges + :param edges: A list of edges + :return: A list of polylines + """ + cache = self.getFeaturesById(self.edge_layer, edges) + polylines = [feat.geometry().asPolyline() for feat in list(cache.asDict().values())] + return polylines + + # pylint: disable=no-self-use + def getFeaturesById(self, layer, ids): + """ + Get some features by their id + """ + feat_cache = TwwFeatureCache(layer) + data_provider = layer.dataProvider() + + features = data_provider.getFeatures() + + for feat in features: + if feat.id() in ids: + feat_cache.addFeature(feat) + + return feat_cache + + # pylint: disable=no-self-use + def getFeaturesByAttr(self, layer, attr, values): + """ + Get some features by an attribute value + """ + feat_cache = TwwFeatureCache(layer) + data_provider = feat_cache.layer.dataProvider() + + # Batch query and filter locally + features = data_provider.getFeatures() + + for feat in features: + if feat_cache.attrAsUnicode(feat, attr) in values: + feat_cache.addFeature(feat) + + return feat_cache + + def print_profile(self): + """ + Will print some performance profiling information + """ + for name, spenttime in self.timings: + print(name + ":" + str(spenttime)) + + +class TwwFeatureCache: + """ + A feature cache. + The DB can be slow sometimes, so if we know, that we'll be using some features + several times consecutively it's better to keep it in memory. + There is no check done for maximum size. You have to care for your memory + yourself, when using this class! + """ + + _featuresById = None + _featuresByObjId = None + objIdField = None + layer = None + + def __init__(self, layer, obj_id_field="obj_id"): + self._featuresById = {} + self._featuresByObjId = {} + self.objIdField = obj_id_field + self.layer = layer + + def __getitem__(self, key): + return self.featureById(key) + + def addFeature(self, feat): + """ + Add a feature to the cache + """ + self._featuresById[feat.id()] = feat + self._featuresByObjId[self.attrAsUnicode(feat, self.objIdField)] = feat + + def featureById(self, fid): + """ + Get a feature by its feature id + """ + return self._featuresById[fid] + + def featureByObjId(self, obj_id): + """ + Get a feature by its object id + """ + return self._featuresByObjId[obj_id] + + def attrAsFloat(self, feat, attr): + """ + Get an attribute as float + """ + try: + return float(self.attr(feat, attr)) + except TypeError: + return None + + def attrAsUnicode(self, feat, attr): + """ + Get an attribute as unicode string + """ + return self.attr(feat, attr) + + # pylint: disable=no-self-use + def attr(self, feat, attr): + """ + Get an attribute + """ + try: + if feat[attr] == NULL: + return None + else: + return feat[attr] + except KeyError: + QgsMessageLog.logMessage(f"Unknown field {attr}", "tww", Qgis.Critical) + return None + + def attrAsGeometry(self, feat, attr): + """ + Get an attribute as geometry + """ + ewktstring = self.attrAsUnicode(feat, attr) + # Strip SRID=21781; token, TODO: Fix this upstream + m = re.search("(.*;)?(.*)", ewktstring) + return QgsGeometry.fromWkt(m.group(2)) + + def asDict(self) -> dict: + """ + Returns all features a s a dictionary with ids as keys + """ + return self._featuresById + + def asObjIdDict(self): + """ + Returns all features as a dictionary with object ids as keys. + """ + return self._featuresById diff --git a/plugin/teksi_interlis_tool/tools/twwprofile.py b/plugin/teksi_interlis_tool/tools/twwprofile.py new file mode 100644 index 0000000..b790485 --- /dev/null +++ b/plugin/teksi_interlis_tool/tools/twwprofile.py @@ -0,0 +1,514 @@ +# ----------------------------------------------------------- +# +# Profile +# Copyright (C) 2012 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this progsram; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +""" +This module provides objects which manage a TWW profile. +""" + +import json + + +class TwwProfileElement: + """ + Base class for all profile elements + """ + + feat = None + + def __init__(self, element_type): + self.type = element_type + + def asDict(self): + """ + Returns this element as a dict. + """ + return {"type": self.type} + + def feature(self): + """ + Return the feature which is managed by this element + """ + return self.feat + + def highlight(self, rubberband): + """ + Override this method and update the rubberband so it will represent + the feature which this element represents + """ + + +class TwwProfileEdgeElement(TwwProfileElement): + """ + Define the base attributes for all edge elements (reaches and special structures) + """ + + obj_id = None + gid = None + blind_connections = None + + def __init__( + self, + from_point_id, + to_point_oid, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + elem_type, + ): + TwwProfileElement.__init__(self, elem_type) + self.reachPoints = {} + + edge = edge_cache.featureById(edge_id) + + # Read the identifiers + self.obj_id = edge_cache.attrAsUnicode(edge, "obj_id") + self.gid = edge.id() + + self.addSegment( + from_point_id, + to_point_oid, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ) + + def addSegment( + self, + from_point_id, + to_point_id, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ): + """ + Adds a segment to the profile + + :param from_point_id: The id of the from node of this edge + :param to_point_id: The id of the to node of this edge + :param edge_id: The id of this edge + :param node_cache: A reference to the cache where the nodes are cached + :param edge_cache: A reference to the cache where the edges are cached + :param start_offset: The offset of the start node relative to the start of the profile + :param end_offset: The offset of the end node relative to the start of the profile + """ + from_point = node_cache.featureById(from_point_id) + to_point = node_cache.featureById(to_point_id) + edge = edge_cache.featureById(edge_id) + + if from_point_id not in self.reachPoints: + self.reachPoints[from_point_id] = {} + if to_point_id not in self.reachPoints: + self.reachPoints[to_point_id] = {} + + from_pos = edge_cache.attrAsFloat(edge, "from_pos") + to_pos = edge_cache.attrAsFloat(edge, "to_pos") + + interpolate_from_obj_id = edge_cache.attrAsUnicode(edge, "from_obj_id_interpolate") + interpolate_to_obj_id = edge_cache.attrAsUnicode(edge, "to_obj_id_interpolate") + interpolate_from = node_cache.featureByObjId(interpolate_from_obj_id) + interpolate_to = node_cache.featureByObjId(interpolate_to_obj_id) + interpolate_from_level = node_cache.attrAsFloat(interpolate_from, "level") + interpolate_to_level = node_cache.attrAsFloat(interpolate_to, "level") + + if from_pos == 0 and to_pos == 1: + fromlevel = node_cache.attrAsFloat(from_point, "level") + tolevel = node_cache.attrAsFloat(to_point, "level") + else: + try: + fromlevel = interpolate_from_level + ( + from_pos * (interpolate_to_level - interpolate_from_level) + ) + except TypeError: + fromlevel = None + try: + tolevel = interpolate_from_level + ( + to_pos * (interpolate_to_level - interpolate_from_level) + ) + except TypeError: + tolevel = None + + self.fromLevel = interpolate_from_level + self.toLevel = interpolate_to_level + + self.reachPoints[from_point_id]["offset"] = start_offset + self.reachPoints[from_point_id]["level"] = fromlevel + self.reachPoints[from_point_id]["pos"] = from_pos + self.reachPoints[from_point_id]["objId"] = node_cache.attrAsUnicode(from_point, "obj_id") + + self.reachPoints[to_point_id]["offset"] = end_offset + self.reachPoints[to_point_id]["level"] = tolevel + self.reachPoints[to_point_id]["pos"] = to_pos + self.reachPoints[to_point_id]["objId"] = node_cache.attrAsUnicode(to_point, "obj_id") + + def asDict(self): + """ + Returns this element as a dict. + """ + reach_points = sorted(list(self.reachPoints.values()), key=lambda p: p["offset"]) + startoffset = min([p["offset"] for p in reach_points]) + endoffset = max([p["offset"] for p in reach_points]) + fromlevel = reach_points[0]["level"] or 0 + tolevel = reach_points[-1]["level"] or fromlevel + + el = TwwProfileElement.asDict(self) + el.update( + { + "startOffset": startoffset, + "endOffset": endoffset, + "startLevel": fromlevel, + "endLevel": tolevel, + "globStartLevel": self.fromLevel, + "globEndLevel": self.toLevel, + "objId": self.obj_id, + "gid": self.gid, + "reachPoints": list(self.reachPoints.values()), + } + ) + return el + + +class TwwProfileReachElement(TwwProfileEdgeElement): + """ + Define the profile for the REACH element + """ + + usageCurrent = None + width = None + length = None + gradient = None + detail_geometry = None + material = None + + def __init__( + self, + from_point_id, + to_point_id, + reach_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ): + """ + :param from_point_id: The id of the from node of this edge + :param to_point_id: The id of the to node of this edge + :param edgeId: The id of this edge + :param node_cache: A reference to the cache where the nodes are cached + :param edge_cache: A reference to the cache where the edges are cached + :param start_offset: The offset of the start node relative to the start of the profile + :param end_offset: The offset of the end node relative to the start of the profile + """ + TwwProfileEdgeElement.__init__( + self, + from_point_id, + to_point_id, + reach_id, + node_cache, + edge_cache, + start_offset, + end_offset, + "reach", + ) + reach = edge_cache.featureById(reach_id) + self.feat = reach + + try: + self.width = edge_cache.attrAsFloat(reach, "clear_height") / 1000.0 + except TypeError: + pass + + self.usageCurrent = edge_cache.attrAsFloat(reach, "usage_current") + self.material = edge_cache.attrAsUnicode(reach, "material") + self.length = edge_cache.attrAsFloat(reach, "length_full") + + self.detail_geometry = edge_cache.attrAsGeometry(reach, "detail_geometry") + + # The levels can be unset (None). Catch it + try: + self.gradient = (self.fromLevel - self.toLevel) / self.length + except TypeError: + pass + + def asDict(self): + """ + Returns this element as a dict. + """ + el = TwwProfileEdgeElement.asDict(self) + + # Global length: whole reach + el.update( + { + "usageCurrent": self.usageCurrent, + "width_m": self.width, + "gradient": self.gradient, + "length": self.length, + "material": self.material, + } + ) + return el + + def highlight(self, rubberband): + """ + Highlights this element + """ + rubberband.setToGeometry(self.detail_geometry, None) + + +class TwwProfileSpecialStructureElement(TwwProfileEdgeElement): + """ + The profile element for STRUCTURE elements. + It's also responsible for manholes, as there is no particular + reason to distinguish these here. + """ + + bottom_level = None + cover_level = None + description = None + ww_node_offset = None + detailGeometry = None + type = None + + def __init__( + self, + from_point_id, + to_point_id, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ): + TwwProfileEdgeElement.__init__( + self, + from_point_id, + to_point_id, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + "special_structure", + ) + special_structure = edge_cache.featureById(edge_id) + self.feat = special_structure + + self.addSegment( + from_point_id, + to_point_id, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ) + + def addSegment( + self, + from_point_id, + to_point_id, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ): + """ + Adds a segment to the special structure. There are normally two parts: + From the start to the wastewater node and from there to the end + + :param from_point_id: The id of the from node of this edge + :param to_point_id: The id of the to node of this edge + :param edge_id: The id of this edge + :param node_cache: A reference to the cache where the nodes are cached + :param edge_cache: A reference to the cache where the edges are cached + :param start_offset: The offset of the start node relative to the start of the profile + :param end_offset: The offset of the end node relative to the start of the profile + """ + TwwProfileEdgeElement.addSegment( + self, + from_point_id, + to_point_id, + edge_id, + node_cache, + edge_cache, + start_offset, + end_offset, + ) + from_point = node_cache.featureById(from_point_id) + to_point = node_cache.featureById(to_point_id) + specialstructure = edge_cache.featureById(edge_id) + + self.bottom_level = edge_cache.attrAsFloat(specialstructure, "bottom_level") + + defining_wastewater_node = None + + if "wastewater_node" == node_cache.attrAsUnicode(from_point, "type"): + defining_wastewater_node = from_point + self.ww_node_offset = start_offset + elif "wastewater_node" == node_cache.attrAsUnicode(to_point, "type"): + defining_wastewater_node = to_point + self.ww_node_offset = end_offset + + # There should always be a wastewater node but checking does not hurt + if defining_wastewater_node is not None: + self.node_type = node_cache.attrAsUnicode(defining_wastewater_node, "node_type") + self.cover_level = node_cache.attrAsFloat(defining_wastewater_node, "cover_level") + self.description = node_cache.attrAsUnicode(defining_wastewater_node, "description") + self.usage_current = node_cache.attrAsFloat(defining_wastewater_node, "usage_current") + self.detailGeometry = node_cache.attrAsGeometry( + defining_wastewater_node, "detail_geometry" + ) + + def highlight(self, rubberband): + """ + Highlights this element + """ + rubberband.setToGeometry(self.detailGeometry, None) + + def asDict(self): + el = TwwProfileEdgeElement.asDict(self) + el.update( + { + "bottomLevel": self.bottom_level, + "description": self.description, + "coverLevel": self.cover_level, + "usageCurrent": self.usage_current, + "wwNodeOffset": self.ww_node_offset, + "nodeType": self.node_type, + } + ) + return el + + +class TwwProfileNodeElement(TwwProfileElement): + """ + A node (wastewater node or reach point) + """ + + cover_level = None + offset = None + + def __init__(self, point_id, node_cache, offset): + TwwProfileElement.__init__(self, "node") + + point = node_cache.featureById(point_id) + + self.offset = offset + self.cover_level = node_cache.attrAsFloat(point, "cover_level") + self.backflow_level = node_cache.attrAsFloat(point, "backflow_level") + + def asDict(self): + el = TwwProfileElement.asDict(self) + el.update( + { + "offset": self.offset, + "coverLevel": self.cover_level, + "backflowLevel": self.backflow_level, + } + ) + return el + + +class TwwProfile: + """ + Manages a profile of reaches and special structures + """ + + rubberband = None + + def __init__(self, elements=None): + if elements is None: + elements = {} + self.elements = elements + + def setRubberband(self, rubberband): + """ + Well... this sets the rubberband + :param rubberband: A QgsRubberBand + """ + self.rubberband = rubberband + + def copy(self): + """ + Create a deep copy of the profile + :return: A copy of this profile + """ + new_profile = TwwProfile(self.elements.copy()) + new_profile.setRubberband(self.rubberband) + return new_profile + + def __getitem__(self, key): + return self.elements[key] + + def hasElement(self, key): + """ + Check if an element with a given object id is already present in the profile + :param key: An object id + :return: Boolean + """ + return key in self.elements + + def addElement(self, key, elem): + """ + Add an element to this profile + :param key: The object id + :param elem: A subclass of TwwProfileElement + """ + self.elements[key] = elem + + def getElements(self): + """ + Get all elements of this profile + :return: A list of elements + """ + return list(self.elements.values()) + + def asJson(self): + """ + Prepare profile as JSON string, so the javascript responsible for the + svg will know what to do with the data. + """ + return json.dumps([element.asDict() for element in list(self.elements.values())]) + + def reset(self): + """ + Reset the profile ( forget about all elements ) + """ + self.elements = {} + + def highlight(self, obj_id): + """ + Update a rubberband to highlight a given object + :param obj_id: the object id of the object to hihglight + """ + if obj_id is not None: + self.elements[obj_id].highlight(self.rubberband) + else: + self.rubberband.reset() diff --git a/plugin/teksi_interlis_tool/ui/__init__.py b/plugin/teksi_interlis_tool/ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin/teksi_interlis_tool/ui/about_dialog.ui b/plugin/teksi_interlis_tool/ui/about_dialog.ui new file mode 100644 index 0000000..8212516 --- /dev/null +++ b/plugin/teksi_interlis_tool/ui/about_dialog.ui @@ -0,0 +1,221 @@ + + + AboutDialog + + + + 0 + 0 + 588 + 426 + + + + Dialog + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Sans Serif + 16 + 75 + true + + + + TITLE + + + + + + + + 12 + + + + DESCRIPTION + + + + + + + + true + + + + ABOUT + + + true + + + + + + + + + + + + 75 + true + + + + QGIS minimum version: + + + + + + + <html><head/><body><p><a href="https://github.com/teksi/Home/wiki/TEKSI-open-source-Community#sponsors"><span style=" text-decoration: underline; color:#2980b9;">TEKSI open source sponsors</span></a></p></body></html> + + + true + + + + + + + QGIS MIN VERSION + + + + + + + python3-sqlalchemy + + + + + + + + 75 + true + + + + Python requirements: + + + + + + + + 75 + true + + + + Sponsor: + + + + + + + + 75 + true + + + + License: + + + + + + + python3-networkx + + + + + + + + 75 + true + + + + Author: + + + + + + + GNU GPL 2 + + + + + + + <html><head/><body><p><a href="https://github.com/teksi/Home/wiki/TEKSI-open-source-Community#contributors"><span style=" text-decoration: underline; color:#2980b9;">TEKSI open source contributors</span></a></p></body></html> + + + true + + + + + + + python3-geoalchemy + + + + + + + + + <html><head/><body><p>For any feedback, bugs or comments, please visit <a href="https://github.com/teksi/wastewater/issues"><span style=" text-decoration: underline; color:#2980b9;">https://github.com/teksi/wastewater/issues</span></a>. </p><p>For the changelog: <a href="https://github.com/teksi/wastewater/releases"><span style=" text-decoration: underline; color:#2980b9;">https://github.com/teksi/wastewater/releases</span></a>.</p></body></html> + + + true + + + + + + + ICON + + + + + + + + diff --git a/plugin/teksi_interlis_tool/ui/twwdatamodeldialog.ui b/plugin/teksi_interlis_tool/ui/twwdatamodeldialog.ui new file mode 100644 index 0000000..ad231e7 --- /dev/null +++ b/plugin/teksi_interlis_tool/ui/twwdatamodeldialog.ui @@ -0,0 +1,374 @@ + + + TwwSettingsDialog + + + + 0 + 0 + 433 + 424 + + + + Datamodel tool + + + + + + Dependencies + + + + + + + + color: rgb(170, 0, 0); +font-weight: bold; + + + Unknown + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + Install + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Python requirements + + + + + + + + + + Postgres service configuration + + + + + + File location + + + + + + + font: italic; color: #888 + + + - + + + + + + + PG Config setup + + + + + + + + + + + + + + + + + + + + color: rgb(170, 0, 0); +font-weight: bold; + + + Unknown + + + + + + + + + Current selection + + + + + + + font: italic; color: #888 + + + - + + + true + + + + + + + + + + Datamodel + + + + + + Current version + + + + + + + + + color: rgb(170, 0, 0); +font-weight: bold; + + + Unknown + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + SRID + + + + + + + 2056 + + + + + + + Action + + + + + + + + + Initialize + + + + + + + Upgrade + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Target version + + + + + + + color: rgb(170, 0, 0); +font-weight: bold; + + + Unknown + + + + + + + + + + QGIS project + + + + + + + + color: rgb(170, 0, 0); +font-weight: bold; + + + Unknown + + + + + + + Load + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Load QGIS project template + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + mBtnBoxOkCancel + accepted() + TwwSettingsDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + mBtnBoxOkCancel + rejected() + TwwSettingsDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/plugin/teksi_interlis_tool/ui/twwdockwidget.ui b/plugin/teksi_interlis_tool/ui/twwdockwidget.ui new file mode 100644 index 0000000..c5ab08b --- /dev/null +++ b/plugin/teksi_interlis_tool/ui/twwdockwidget.ui @@ -0,0 +1,225 @@ + + + TwwDockWidget + + + + 0 + 0 + 928 + 332 + + + + TWW + + + + + 0 + 0 + + + + + + + true + + + QTabWidget::North + + + QTabWidget::Rounded + + + 0 + + + Qt::ElideNone + + + true + + + + + 0 + 0 + + + + &Profile + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Perform calculation + + + + + + + Select current path + + + QToolButton::MenuButtonPopup + + + + + + + Print + + + + + + + + + + + + 10x + + + + + + + + 0 + 0 + + + + 1 + + + 10 + + + 1 + + + 5 + + + 5 + + + Qt::Vertical + + + QSlider::TicksAbove + + + 0 + + + + + + + + + + + Tools + + + + + + Recreate graph + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/ui/twwpgserviceeditordialog.ui b/plugin/teksi_interlis_tool/ui/twwpgserviceeditordialog.ui new file mode 100644 index 0000000..ef4ba6a --- /dev/null +++ b/plugin/teksi_interlis_tool/ui/twwpgserviceeditordialog.ui @@ -0,0 +1,201 @@ + + + Dialog + + + + 0 + 0 + 291 + 238 + + + + PG Config editor + + + + + + Config name + + + + + + + + + + + + color: rgb(170, 0, 0); +font-weight: bold; + + + Unknown + + + + + + + + + Host + + + + + + + + + + Port + + + + + + + + + + Database + + + + + + + + + + User + + + + + + + + + + + + + + + + + + + + + Password + + + + + + + + + + + + + + + + QLineEdit::PasswordEchoOnEdit + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + WARNING ! These settings will be saved to the pg_service.conf in plain text ! Any person having access to this file will be able to access the credentials. + + + true + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/plugin/teksi_interlis_tool/ui/twwsettingsdialog.ui b/plugin/teksi_interlis_tool/ui/twwsettingsdialog.ui new file mode 100644 index 0000000..0c09013 --- /dev/null +++ b/plugin/teksi_interlis_tool/ui/twwsettingsdialog.ui @@ -0,0 +1,376 @@ + + + TwwSettingsDialog + + + + 0 + 0 + 804 + 466 + + + + Dialog + + + + + + 0 + + + + Layout Options + + + + + + Helper line color + + + + + + + Current profile color + + + + + + + Feature highlighting color + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 100 + 16777215 + + + + + + + + + + + + 50 + 0 + + + + + 100 + 16777215 + + + + + + + + + + + + 50 + 0 + + + + + 100 + 16777215 + + + + + + + + + + + + Project Settings + + + + + 10 + 30 + 786 + 147 + + + + Layers + + + + + + Special structures: + + + + + + + + + + Graph nodes: + + + + + + + + + + + + + Graph edges: + + + + + + + + + Developer Options + + + + + + Enables developer tools on the profile widget. Reload and Inspect options are shown. The dock needs to be reopened. + + + Developer mode (restart required) + + + + + + + Enables the datamodel tool. The plugin needs to be reloaded. + + + Admin mode + + + + + + + Layout + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Override default profile template + + + true + + + false + + + + + + + + + ... + + + + + + + + + + + + + Logging + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Log level + + + + + + + + Debug + + + + + Info + + + + + Warning + + + + + Critical + + + + + + + + Log to file + + + true + + + + + + Log file + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + QgsColorButton + QToolButton +
qgis.gui
+
+
+ + + + mBtnBoxOkCancel + accepted() + TwwSettingsDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + mBtnBoxOkCancel + rejected() + TwwSettingsDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/plugin/teksi_interlis_tool/ui/twwwizard.ui b/plugin/teksi_interlis_tool/ui/twwwizard.ui new file mode 100644 index 0000000..0a72e1c --- /dev/null +++ b/plugin/teksi_interlis_tool/ui/twwwizard.ui @@ -0,0 +1,60 @@ + + + TwwDockWidget + + + + 0 + 0 + 327 + 136 + + + + TWW Data Entry + + + + + + + Create + + + + + + + Start Data Entry + + + + + + + false + + + true + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + diff --git a/plugin/teksi_interlis_tool/utils/__init__.py b/plugin/teksi_interlis_tool/utils/__init__.py new file mode 100644 index 0000000..996298d --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/__init__.py @@ -0,0 +1,5 @@ +from .ui import get_ui_class + +__all__ = [ + "get_ui_class", +] diff --git a/plugin/teksi_interlis_tool/utils/database_utils.py b/plugin/teksi_interlis_tool/utils/database_utils.py new file mode 100644 index 0000000..3f3ee82 --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/database_utils.py @@ -0,0 +1,238 @@ +import collections +import configparser +import os +from typing import List + +from .plugin_utils import logger + +try: + import psycopg + + PSYCOPG_VERSION = 3 + DEFAULTS_CONN_ARG = {"autocommit": True} +except ImportError: + import psycopg2 as psycopg + + PSYCOPG_VERSION = 2 + DEFAULTS_CONN_ARG = {} + + +class DatabaseConfig: + def __init__(self) -> None: + self.PGSERVICE = None # overriden by PG* settings below + self.PGHOST = os.getenv("PGHOST", None) + self.PGPORT = os.getenv("PGPORT", None) + self.PGDATABASE = os.getenv("PGDATABASE", None) + self.PGUSER = os.getenv("PGUSER", None) + self.PGPASS = os.getenv("PGPASS", None) + + +class DatabaseUtils: + + databaseConfig = DatabaseConfig() + + class PsycopgConnection: + def __init__(self) -> None: + self.connection = None + + def __enter__(self): + self.connection = psycopg.connect( + DatabaseUtils.get_pgconf_as_psycopg_dsn(), **DEFAULTS_CONN_ARG + ) + if PSYCOPG_VERSION == 2: + self.connection.set_session(autocommit=True) + + return self.connection + + def __exit__(self, exc_type, exc_val, exc_tb): + self.connection.commit() + self.connection.close() + + @staticmethod + def fetchone(query: str): + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + + cursor.execute(query) + return cursor.fetchone() + + @staticmethod + def fetchall(query: str): + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + + cursor.execute(query) + return cursor.fetchall() + + @staticmethod + def execute(query: str): + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + cursor.execute(query) + + @staticmethod + def get_psycopg_connection(): + connection = psycopg.connect( + DatabaseUtils.get_pgconf_as_psycopg_dsn(), **DEFAULTS_CONN_ARG + ) + if PSYCOPG_VERSION == 2: + connection.set_session(autocommit=True) + + @staticmethod + def read_pgservice(service_name): + """ + Returns a config object from a pg_service name (parsed from PGSERVICEFILE). + """ + + # Path for pg_service.conf + if os.environ.get("PGSERVICEFILE"): + PG_CONFIG_PATH = os.environ.get("PGSERVICEFILE") + elif os.environ.get("PGSYSCONFDIR"): + PG_CONFIG_PATH = os.path.join(os.environ.get("PGSYSCONFDIR"), "pg_service.conf") + else: + PG_CONFIG_PATH = os.path.expanduser("~/.pg_service.conf") + + config = configparser.ConfigParser() + if os.path.exists(PG_CONFIG_PATH): + config.read(PG_CONFIG_PATH) + + if service_name not in config: + logger.warning(f"Service `{service_name}` not found in {PG_CONFIG_PATH}.") + return {} + + return config[service_name] + + @staticmethod + def get_pgconf(): + """ + Returns the postgres configuration (parsed from the config.PGSERVICE service and overriden by config.PG* settings) + """ + + if DatabaseUtils.databaseConfig.PGSERVICE: + pgconf = DatabaseUtils.read_pgservice(DatabaseUtils.databaseConfig.PGSERVICE) + else: + pgconf = {} + + if DatabaseUtils.databaseConfig.PGHOST: + pgconf["host"] = DatabaseUtils.databaseConfig.PGHOST + if DatabaseUtils.databaseConfig.PGPORT: + pgconf["port"] = DatabaseUtils.databaseConfig.PGPORT + if DatabaseUtils.databaseConfig.PGDATABASE: + pgconf["dbname"] = DatabaseUtils.databaseConfig.PGDATABASE + if DatabaseUtils.databaseConfig.PGUSER: + pgconf["user"] = DatabaseUtils.databaseConfig.PGUSER + if DatabaseUtils.databaseConfig.PGPASS: + pgconf["password"] = DatabaseUtils.databaseConfig.PGPASS + + return collections.defaultdict(str, pgconf) + + @staticmethod + def get_pgconf_as_psycopg_dsn() -> List[str]: + """Returns the pgconf as a psycopg connection string""" + + pgconf = DatabaseUtils.get_pgconf() + parts = [] + if pgconf["host"]: + parts.append(f"host={pgconf['host']}") + if pgconf["port"]: + parts.append(f"port={pgconf['port']}") + if pgconf["user"]: + parts.append(f"dbname={pgconf['dbname']}") + if pgconf["password"]: + parts.append(f"user={pgconf['user']}") + if pgconf["dbname"]: + parts.append(f"password={pgconf['password']}") + return " ".join(parts) + + @staticmethod + def disable_symbology_triggers(): + logger.info("Disable symbology triggers") + DatabaseUtils.execute("SELECT tww_app.alter_symbology_triggers('disable');") + + @staticmethod + def enable_symbology_triggers(): + logger.info("Enable symbology triggers") + DatabaseUtils.execute("SELECT tww_app.alter_symbology_triggers('enable');") + + @staticmethod + def check_symbology_triggers_enabled(): + logger.info("Check symbology triggers enabled") + row = DatabaseUtils.fetchone("SELECT tww_app.check_symbology_triggers_enabled();") + return row[0] + + @staticmethod + def update_symbology(): + with DatabaseUtils.PsycopgConnection() as connection: + cursor = connection.cursor() + + logger.info("update_wastewater_node_symbology for all datasets - please be patient") + cursor.execute("SELECT tww_app.update_wastewater_node_symbology(NULL, True);") + logger.info("update_wastewater_structure_label for all datasets - please be patient") + cursor.execute("SELECT tww_app.update_wastewater_structure_label(NULL, True);") + + @staticmethod + def disable_modification_triggers(): + logger.info("Disable modification triggers") + DatabaseUtils.execute("SELECT tww_app.alter_modification_triggers('disable');") + + @staticmethod + def enable_modification_triggers(): + logger.info("Enable modification triggers") + DatabaseUtils.execute("SELECT tww_app.alter_modification_triggers('enable');") + + @staticmethod + def check_modification_triggers_enabled(): + logger.info("Check if modification triggers are enabled") + row = DatabaseUtils.fetchone("SELECT tww_app.check_modification_enabled();") + return row[0] + + @staticmethod + def check_oid_prefix() -> List[str]: + """Check whether the oid_prefix is set up for production""" + logger.info("Checking setup of oid prefix") + prefixes = DatabaseUtils.fetchall("SELECT prefix FROM tww_sys.oid_prefixes WHERE active;") + + msg_list = [] + if len(prefixes) > 1: + msg_list.append( + "more than one oid_prefix set to active. Generation of Object-ID will not work. Set the OID prefix for your production database to active." + ) + + if len(prefixes) > 0: + active_pref = prefixes[0][0] + if active_pref == "ch000000": + msg_list.append("OID prefix set to 'ch000000'. Database not safe for production") + + return msg_list + + @staticmethod + def check_fk_defaults() -> List[str]: + """Check whether the database is set up for production""" + logger.info("Checking setup of default_values") + + defaults = [] + vals = [] + for item in DatabaseUtils.fetchall( + "SELECT fieldname,value_obj_id from tww_od.default_values;" + ): + defaults.append(item[0]) + vals.append(item[1]) + + msg_list = [] + if None in vals: + msg_list.append("There is an undefined default value in tww_od.default_values") + elif not all(x in defaults for x in ["fk_provider", "fk_dataowner"]): + msg_list.append("'fk_provider' or 'fk_dataowner' not set in tww_od.default_values") + + return msg_list + + @staticmethod + def get_validity_check_issues() -> List[str]: + messages = [] + messages = DatabaseUtils.check_oid_prefix() + messages.extend(DatabaseUtils.check_fk_defaults()) + + if not DatabaseUtils.check_symbology_triggers_enabled(): + messages.append("Symbology triggers are disabled") + + return messages diff --git a/plugin/teksi_interlis_tool/utils/plugin_utils.py b/plugin/teksi_interlis_tool/utils/plugin_utils.py new file mode 100644 index 0000000..f1b94f4 --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/plugin_utils.py @@ -0,0 +1,64 @@ +""" +/*************************************************************************** + Plugin Utils + ------------------- + begin : 28.4.2018 + copyright : (C) 2018 by OPENGIS.ch + email : matthias@opengis.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +""" + +import logging +import os + + +def plugin_root_path(): + """ + Returns the root path of the plugin + """ + return os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) + + +class DeduplicatedLogger(logging.Logger): + """Logger that deduplicates messages + + Multiple subsequent logging with the same message/level will result in [repeated N times] + message instead of many lines. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._last_message = None + self._repeated = 0 + + def _log(self, level, msg, args, exc_info=None, extra=None, stacklevel=1): + this_message = (level, msg) + if self._last_message is None or self._last_message != this_message: + if self._repeated > 0: + super()._log( + self._last_message[0], + f"[repeated {self._repeated} times]", + args, + exc_info, + extra, + stacklevel, + ) + + super()._log(level, msg, args, exc_info, extra) + self._repeated = 0 + else: + self._repeated += 1 + self._last_message = this_message + + +logging.setLoggerClass(DeduplicatedLogger) +logger = logging.getLogger(__package__) diff --git a/plugin/teksi_interlis_tool/utils/qt_utils.py b/plugin/teksi_interlis_tool/utils/qt_utils.py new file mode 100644 index 0000000..a8957ca --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/qt_utils.py @@ -0,0 +1,30 @@ +""" +/*************************************************************************** + ------------------- + begin : 2016 + copyright : (C) 2016 by OPENGIS.ch + email : info@opengis.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +""" + +from PyQt5.QtWidgets import QApplication + + +class OverrideCursor: + def __init__(self, cursor): + self.cursor = cursor + + def __enter__(self): + QApplication.setOverrideCursor(self.cursor) + + def __exit__(self, exc_type, exc_val, exc_tb): + QApplication.restoreOverrideCursor() diff --git a/plugin/teksi_interlis_tool/utils/translation.py b/plugin/teksi_interlis_tool/utils/translation.py new file mode 100644 index 0000000..847f124 --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/translation.py @@ -0,0 +1,84 @@ +""" +This module is used for translation of the TWW project +""" + +import logging +import os + +from qgis.PyQt.QtCore import ( + QCoreApplication, + QLocale, + QObject, + QSettings, + QTranslator, + pyqtSlot, +) +from qgis.PyQt.QtWidgets import QApplication + + +def setup_i18n(the_preferred_locale=None): + """ + Setup internationalisation for the plugin. + + See if QGIS wants to override the system locale + and then see if we can get a valid translation file + for whatever locale is effectively being used. + + @param the_preferred_locale will override any other locale setting + """ + + logger = logging.getLogger(__name__) + + my_override_flag = QSettings().value("locale/overrideFlag", False, type=bool) + + my_locale_name = None + if the_preferred_locale is not None: + my_locale_name = the_preferred_locale + logger.info("Using preferred locale: " + my_locale_name) + elif my_override_flag: + my_locale_name = QSettings().value("locale/userLocale", "") + logger.info("Using QGIS override locale: " + my_locale_name) + else: + my_locale_name = QLocale.system().name() + # NOTES: we split the locale name because we need the first two + # character i.e. 'id', 'af, etc + my_locale_name = str(my_locale_name) + logger.info("Using system default locale: " + my_locale_name) + + # Insert into QT's translation system + # As soon as translator gets deleted, the translation will stop + # Therefore, QCoreApplication is set as parent to not delete it + # while the application is running (but we might end up loading + # the same translation twice) + translator = QTranslator(QCoreApplication.instance()) + + my_translator_file = "teksi_interlis_tool_" + my_locale_name + my_translator_path = os.path.join( + os.path.dirname(os.path.dirname(__file__)), "i18n", my_translator_file + ) + + my_result = translator.load(my_translator_path) + + if my_result: + QCoreApplication.instance().installTranslator(translator) + + +# pylint: disable=too-few-public-methods +class TwwJsTranslator(QObject): + """ + Provides a callback method for the javascript code to support translation + """ + + def __init__(self): + QObject.__init__(self) + + # pylint: disable=R0201 + @pyqtSlot(str, str, name="qsTr", result=str) + def qsTr(self, context, source_text): + """ + Will be called by javascript code to perform translation of strings + :param context: The translation context + :param source_text: The string to translate + :return: + """ + return QApplication.translate(context, source_text) diff --git a/plugin/teksi_interlis_tool/utils/twwlayermanager.py b/plugin/teksi_interlis_tool/utils/twwlayermanager.py new file mode 100644 index 0000000..41fa0ca --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/twwlayermanager.py @@ -0,0 +1,93 @@ +""" +This module helps managing the TWW project layers. +""" + +from qgis.core import QgsProject +from qgis.PyQt.QtCore import QObject, pyqtSignal + + +class TwwLayerNotifier(QObject): + """ + This class sends out notification when a given set of layers is available or unavailable. + """ + + layersAvailable = pyqtSignal([dict]) + layersUnavailable = pyqtSignal() + + layersAvailableChanged = pyqtSignal(bool) + + available = False + + def __init__(self, parent, layers): + QObject.__init__(self, parent) + self.layers = layers + + QgsProject.instance().layersWillBeRemoved.connect(self.layersWillBeRemoved) + QgsProject.instance().layersAdded.connect(self.layersAdded) + + def layersWillBeRemoved(self, _): + """ + Gets called when a layer is removed + + @param _: The layers about to be removed + """ + + if self.available: + for tww_id in self.layers: + lyrs = [ + lyr + for (lyr_id, lyr) in list(QgsProject.instance().mapLayers().items()) + if lyr_id.startswith(tww_id) + ] + if not lyrs: + self.layersUnavailable.emit() + self.layersAvailableChanged.emit(False) + self.available = False + + def layersAdded(self, _): + """ + Gets called when a layer is added + @param _: the layers to check + """ + if not self.available: + lyrlist = dict() + for tww_id in self.layers: + lyr = [ + lyr + for (lyr_id, lyr) in list(QgsProject.instance().mapLayers().items()) + if lyr_id.startswith(tww_id) + ] + if not lyr: + return + lyrlist[tww_id] = lyr[0] + + self.available = True + self.layersAvailableChanged.emit(True) + self.layersAvailable.emit(lyrlist) + + +# pylint: disable=too-few-public-methods +class TwwLayerManager: + """ + Gives access to TWW layers by the table name. + """ + + def __init__(self): + pass + + @staticmethod + def layer(tww_id): + """ + Get a layer by its table name. Searches for the layer in the map layer registry. + :param tww_id: The id of the layer to look for + :return: A layer matching this id or None + """ + lyr = [ + lyr + for (lyr_id, lyr) in list(QgsProject.instance().mapLayers().items()) + if lyr_id.startswith(tww_id) + ] + if lyr: + return lyr[0] + else: + return None diff --git a/plugin/teksi_interlis_tool/utils/twwlogging.py b/plugin/teksi_interlis_tool/utils/twwlogging.py new file mode 100644 index 0000000..076452a --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/twwlogging.py @@ -0,0 +1,50 @@ +# ----------------------------------------------------------- +# +# Profile +# Copyright (C) 2013 Matthias Kuhn +# ----------------------------------------------------------- +# +# licensed under the terms of GNU GPL 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this progsram; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# --------------------------------------------------------------------- + +""" +This module is used for logging in TWW. +""" +import logging + +from qgis.core import QgsApplication, QgsMessageLog + + +class TwwQgsLogHandler(logging.Handler): + """ + A class acting as a translator between pythons log system and the QGIS log + system. + """ + + qgsMessageLog = QgsApplication.messageLog() + + def emit(self, record): + """ + Will be called by pythons logging and is the actual bridge + @param record: The record to be logged + """ + + # Should be adjusted to translate the levelno to QGIS debug levels once + # QGIS agreed on standards. + # See http://hub.qgis.org/issues/6965 + QgsMessageLog.logMessage(record.name + ":" + record.msg, "tww", record.levelno) diff --git a/plugin/teksi_interlis_tool/utils/ui.py b/plugin/teksi_interlis_tool/utils/ui.py new file mode 100644 index 0000000..37a7007 --- /dev/null +++ b/plugin/teksi_interlis_tool/utils/ui.py @@ -0,0 +1,16 @@ +import os + +from qgis.PyQt.uic import loadUiType + +from .plugin_utils import plugin_root_path + + +def get_ui_class(ui_file): + """Get UI Python class from .ui file. + Can be filename.ui or subdirectory/filename.ui + :param ui_file: The file of the ui in svir.ui + :type ui_file: str + """ + os.path.sep.join(ui_file.split("/")) + ui_file_path = os.path.abspath(os.path.join(plugin_root_path(), "ui", ui_file)) + return loadUiType(ui_file_path)[0] diff --git a/plugin/tit_cmd.py b/plugin/tit_cmd.py new file mode 100644 index 0000000..bf8dc2b --- /dev/null +++ b/plugin/tit_cmd.py @@ -0,0 +1,253 @@ +#!/usr/bin/env python3 + +import argparse +import sys + +from qgis.core import QgsApplication +from teksi_interlis_tool.interlis import config +from teksi_interlis_tool.interlis.interlis_importer_exporter import ( + InterlisImporterExporter, + InterlisImporterExporterError, +) +from teksi_interlis_tool.interlis.processing_algs.extractlabels_interlis import ( + ExtractlabelsInterlisAlgorithm, +) +from teksi_interlis_tool.utils.database_utils import DatabaseUtils + +QgsApplication.setPrefixPath("/usr", True) + + +class TeksiWastewaterCmd: + SUBPARSER_NAME_INTERLIS_IMPORT = "interlis_import" + SUBPARSER_NAME_INTERLIS_EXPORT = "interlis_export" + + def __init__(self): + self.parser = argparse.ArgumentParser() + self.args = None + + subparsers = self.parser.add_subparsers(dest="subparser_name", help="sub-command --help") + + self._add_subparser_interlis_import(subparsers=subparsers) + self._add_subparser_interlis_export(subparsers=subparsers) + + def _add_subparser_interlis_import(self, subparsers): + subparser = subparsers.add_parser( + self.SUBPARSER_NAME_INTERLIS_IMPORT, + help=f"{self.SUBPARSER_NAME_INTERLIS_IMPORT} --help", + ) + + subparser.add_argument( + "--xtf_file", + help="XTF input file", + required=True, + ) + subparser.add_argument( + "--show_selection_dialog", + help="Show the object selection dialog at import time", + action="store_true", + ) + subparser.add_argument( + "--logs_next_to_file", + help="Put log files next to XTF import file", + action="store_true", + ) + + self._add_postgres_connection_args(subparser) + + def _add_subparser_interlis_export(self, subparsers): + subparser = subparsers.add_parser( + self.SUBPARSER_NAME_INTERLIS_EXPORT, + help=f"{self.SUBPARSER_NAME_INTERLIS_EXPORT} --help", + ) + + subparser.add_argument("--xtf_file", help="XTF outup file", required=True) + subparser.add_argument( + "--selection", + help="if provided, limits the export to networkelements that are provided in the selection (comma separated list of ids)", + ) + subparser.add_argument( + "--export_model", + default=config.MODEL_NAME_DSS, + choices=[ + config.MODEL_NAME_SIA405_ABWASSER, + config.MODEL_NAME_DSS, + config.MODEL_NAME_VSA_KEK, + ], + help="Model to export (default: %(default)s)", + ) + subparser.add_argument( + "--logs_next_to_file", + help="Put log files next to XTF output file", + action="store_true", + ) + + subparser.add_argument( + "--label_scale_pipeline_registry_1_1000", + help="Export labels in scale 1:1'000, can be combined with other scales (Leitungskataster/Cadastre des conduites souterraines)", + action="store_true", + ) + subparser.add_argument( + "--label_scale_network_plan_1_500", + help="Export labels in scale 1:500, can be combined with other scales (Werkplan/Plan de reseau)", + action="store_true", + ) + subparser.add_argument( + "--label_scale_overviewmap_1_10000", + help="Export labels in scale 1:10'000, can be combined with other scales (Uebersichtsplan/Plan d'ensemble)", + action="store_true", + ) + subparser.add_argument( + "--label_scale_overviewmap_1_5000", + help="Export labels in scale 1:5'000, can be combined with other scales (Uebersichtsplan/Plan d'ensemble)", + action="store_true", + ) + subparser.add_argument( + "--label_scale_overviewmap_1_2000", + help="Export labels in scale 1:2'000, can be combined with other scales (Uebersichtsplan/Plan d'ensemble)", + action="store_true", + ) + + subparser.add_argument( + "--selected_ids", + help="If provided, limits the export to networkelements that are provided in the selection (comma separated list of ids)", + ) + + self._add_postgres_connection_args(subparser) + + def _add_postgres_connection_args(self, subparser): + subparser.add_argument( + "--pgservice", + help="Postgres service name", + ) + subparser.add_argument( + "--pghost", + help="Postgres host", + ) + subparser.add_argument( + "--pgport", + help="Postgres port", + ) + subparser.add_argument( + "--pgdatabase", + help="Postgres database", + ) + subparser.add_argument( + "--pguser", + help="Postgres user", + ) + subparser.add_argument( + "--pgpass", + help="Postgres password", + ) + + def parse_arguments( + self, + ): + self.args = self.parser.parse_args() + + def execute(self): + if self.SUBPARSER_NAME_INTERLIS_IMPORT == self.args.subparser_name: + self.execute_interlis_import() + elif self.SUBPARSER_NAME_INTERLIS_EXPORT == self.args.subparser_name: + self.execute_interlis_export() + else: + self.parser.print_help(sys.stderr) + exit(1) + + def execute_interlis_import(self): + qgs = QgsApplication([], False) + + DatabaseUtils.databaseConfig.PGSERVICE = self.args.pgservice + DatabaseUtils.databaseConfig.PGHOST = self.args.pghost + DatabaseUtils.databaseConfig.PGPORT = self.args.pgport + DatabaseUtils.databaseConfig.PGDATABASE = self.args.pgdatabase + DatabaseUtils.databaseConfig.PGUSER = self.args.pguser + DatabaseUtils.databaseConfig.PGPASS = self.args.pgpass + + interlisImporterExporter = InterlisImporterExporter() + + try: + interlisImporterExporter.interlis_import( + xtf_file_input=self.args.xtf_file, + show_selection_dialog=self.args.show_selection_dialog, + logs_next_to_file=self.args.logs_next_to_file, + ) + + print(f"\nData successfully imported from {self.args.xtf_file}") + + except InterlisImporterExporterError as exception: + print(f"Export error: {exception.error}", file=sys.stderr) + if exception.additional_text: + print(f"Additional details: {exception.additional_text}", file=sys.stderr) + if exception.log_path: + print(f"Log file: {exception.log_path}", file=sys.stderr) + + except Exception as exception: + qgs.exitQgis() + raise exception + + qgs.exitQgis() + + def execute_interlis_export(self): + qgs = QgsApplication([], False) + + DatabaseUtils.databaseConfig.PGSERVICE = self.args.pgservice + DatabaseUtils.databaseConfig.PGHOST = self.args.pghost + DatabaseUtils.databaseConfig.PGPORT = self.args.pgport + DatabaseUtils.databaseConfig.PGDATABASE = self.args.pgdatabase + DatabaseUtils.databaseConfig.PGUSER = self.args.pguser + DatabaseUtils.databaseConfig.PGPASS = self.args.pgpass + + label_scales = [] + if self.args.label_scale_pipeline_registry_1_1000: + label_scales.append( + ExtractlabelsInterlisAlgorithm.AVAILABLE_SCALE_PIPELINE_REGISTRY_1_1000 + ) + if self.args.label_scale_network_plan_1_500: + label_scales.append(ExtractlabelsInterlisAlgorithm.AVAILABLE_SCALE_NETWORK_PLAN_1_500) + if self.args.label_scale_overviewmap_1_10000: + label_scales.append(ExtractlabelsInterlisAlgorithm.AVAILABLE_SCALE_OVERVIEWMAP_1_10000) + if self.args.label_scale_overviewmap_1_5000: + label_scales.append(ExtractlabelsInterlisAlgorithm.AVAILABLE_SCALE_OVERVIEWMAP_1_5000) + if self.args.label_scale_overviewmap_1_2000: + label_scales.append(ExtractlabelsInterlisAlgorithm.AVAILABLE_SCALE_OVERVIEWMAP_1_2000) + + selected_ids = [] + if self.args.selected_ids: + selected_ids = self.args.selected_ids.split(",") + + interlisImporterExporter = InterlisImporterExporter() + try: + interlisImporterExporter.interlis_export( + xtf_file_output=self.args.xtf_file, + export_models=[self.args.export_model], + logs_next_to_file=self.args.logs_next_to_file, + selected_labels_scales_indices=label_scales, + selected_ids=selected_ids, + ) + print(f"\nData successfully exported to {self.args.xtf_file}") + + except InterlisImporterExporterError as exception: + print(f"Export error: {exception.error}", file=sys.stderr) + if exception.additional_text: + print(f"Additional details: {exception.additional_text}", file=sys.stderr) + if exception.log_path: + print(f"Log file: {exception.log_path}", file=sys.stderr) + + except Exception as exception: + qgs.exitQgis() + raise exception + + qgs.exitQgis() + + +if __name__ == "__main__": + teksi_interlis_tool_cmd = TeksiWastewaterCmd() + + teksi_interlis_tool_cmd.parse_arguments() + + if not teksi_interlis_tool_cmd.args: + teksi_interlis_tool_cmd.parser.print_help(sys.stderr) + exit(1) + + teksi_interlis_tool_cmd.execute() diff --git a/scripts/banned-words.sh b/scripts/banned-words.sh new file mode 100644 index 0000000..2926673 --- /dev/null +++ b/scripts/banned-words.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# This test checks for use of deprecated/outdated methods and suggests their replacement + +declare -a KEYWORDS=() +declare -a HINTS=() +declare -a EXCLUDES=() + +KEYWORDS[0]="qgep" +HINTS[0]="No mention of QGEP" + +RES=0 +DIR=$(git rev-parse --show-toplevel) + +pushd "${DIR}" >/dev/null || exit + +for i in "${!KEYWORDS[@]}"; do + FOUND=$(git grep "${KEYWORDS[$i]}" -- '*' -- ':!*banned-words.sh' ':!docs/en/wincan2qgep/**' ':!docs/.tx/config' | grep --invert-match skip-keyword-check) + + if [[ ${FOUND} ]]; then + echo "Found source files with banned keyword: ${KEYWORDS[$i]}!" + echo " -> ${HINTS[$i]}" + echo " or mark with // skip-keyword-check" + echo + echo "${FOUND}" + echo + RES=1 + fi + +done + +popd >/dev/null || exit + +if [[ $RES -eq 1 ]]; then + echo " *** Found banned keywords" +fi + +exit $RES