API src

Found 1726 results.

Similar terms

s/oohrleitung/Rohrleitung/gi

Wasserbuch Hamburg

Für die Gewässer sind Wasserbücher zu führen. In das jeweilige Wasserbuch sind nach § 87 des Wasserhaushaltsgesetzes (WHG) in Verbindung mit § 98 ff. des Hamburgischen Wassergesetzes (HWaG) insbesondere einzutragen: - Erlaubnisse und Bewilligungen - alte Rechte und Befugnisse - Wasserschutzgebiete - Überschwemmungsgebiete und Risikogebiete - Entscheidungen über die Unterhaltung, den Ausbau und den Hochwasserschutz In die Wasserbücher werden die über den Gemeingebrauch hinausgehenden, von den zuständigen Wasserbehörden durch Verwaltungsakte übertragenen Nutzungsrechte an oberirdischen Gewässern sowie am Grundwasser eingetragen. Die Eintragungen beinhalten die Art der Nutzung (z.B. Grundwasserförderung, Herstellen eines Steges) sowie Angaben zum Umfang der Nutzung (z.B. erlaubte Fördermengen, Größe des Steges). Der Datenbestand ist nicht tagesaktuell. Das Wasserbuch dient dazu, den auf die Gewässer einwirkenden oder für ihren Schutz zuständigen öffentlichen Stellen sowie den Bürgerinnen und Bürgern einen umfassenden Überblick über die wesentlichen Rechtsverhältnisse an Gewässern zu geben. Die Einsicht in das Wasserbuch, in seine Abschriften und diejenigen Urkunden auf die in der Eintragung Bezug genommen wird, ist deshalb jedem gestattet. Entsprechend der Anordnung über die Zuständigkeiten auf dem Gebiet des Wasserrechts und der Wasserwirtschaft gibt es in Hamburg zwei Dienststellen, die separat für ihren Zuständigkeitsbereich das Wasserbuch führen und dort Eintragungen ganz bestimmter Rechtsverhältnisse vornehmen. Die Wasserbücher dieser Dienststellen haben folgende Inhalte: * Wasserbuch der Behörde für Umwelt, Klima, Energie und Agrarwirtschaft (BUKEA/W2) Die Abteilung Abwasserwirtschaft (W2) der BUKEA, führt das Wasserbuch für Erlaubnisse nach § 10 WHG für die Einleitung von Abwasser in Gewässer bzw. für die Entnahme von Wasser aus Gewässern für folgende Gewässer: Außen- und Binnenalster samt elbseitiger Fleete, Elbe sowie alle Hafengewässer, Este, Dove-Elbe unterhalb der Tatenberger Schleuse, Untere Bille und ihre Kanäle, Harburger Binnenhafen, Kaufhauskanal, Östlicher Bahnhofskanal, Westlicher Bahnhofskanal sowie Schiffsgraben. Die Stammdaten aller Erlaubnisse sind vollständig in einer Datenbank erfasst; seit etwa Ende 1999 werden die kompletten Wasserbuchblatt-Inhalte von Neueintragungen und von Änderungen parallel in dieser Datenbank geführt. Das Wasserbuch enthält Daten über: - das Grundwasser (Ausnahme: Neuwerk), - Gewässer II. Ordnung (Ausnahme: Neuwerk) sowie - Gewässer I. Ordnung (Ausnahmen: Neuwerk/ Elbe/ Hafengewässer/ Erlaubnisse zum Einleiten oder Entnehmen nach § 8 WHG), - Regelungen über die Unterhaltung und den Ausbau oberirdischer Gewässer sowie - Regelungen und Entscheidungen über das Errichten und Verändern von staatlichen Hochwasserschutzanlagen und die Zulassung von Rohrleitungen in Deichen und Dämmen. * Wasserbuch der Hamburg Port Authority (HPA) Das Wasserbuch der HPA/213 - beinhaltet u.a. wasserrechtliche Genehmigungen über die Nutzung und den Ausbau der Gewässer Elbe, Hafengewässer, Este, Alten Süderelbe, Überschwemmungsgebiete der Elbe und Vorland der Alten Süderelbe sowie deichrechtliche Genehmigungen für die privaten Hochwasserschutzanlagen (Polder) und Nutzungen auf Neuwerk.

Repository der KI-Ideenwerkstatt: robbenblick

# robbenblick A Computer Vision project for object detection and annotation management using YOLOv8, SAHI, and FiftyOne, with the primary aim of counting objects (Robben) in large aerial images. ## Overview This repository provides a complete MLOps pipeline for: * **Data Preparation:** Converting raw CVAT annotations (XML) and large images into a tiled, YOLO-compatible dataset. * **Automated Experiments:** Systematically training and tuning YOLOv8 models. * **Tiled Inference:** Running optimized inference (SAHI) on large, high-resolution images for object counting. * **Evaluation:** Assessing model performance for both detection (mAP) and counting (MAE, RMSE, R²). * **Visualization:** Analyzing datasets and model predictions interactively with FiftyOne. ## Pretrained Model Weights Pretrained model weights are available on Hugging Face: https://huggingface.co/ki-ideenwerkstatt-23/robbenblick/ ## Project Workflow The project is designed to follow a clear, sequential workflow: 1. **Prepare Data (`create_dataset.py`):** Organize your raw images and CVAT `annotations.xml` in `data/raw/` as shown below. ```text data/raw/ ├── dataset_01/ │ ├── annotations.xml │ └── images/ └── dataset_02/ ... ``` Run the script to generate a tiled, YOLO-formatted dataset in `data/processed/` and ground truth count CSVs. 2. **Tune Model (`run_experiments.py`):** Define a set of hyperparameters (e.g., models, freeze layers, augmentation) in `configs/base_iter_config.yaml`. Run the script to train a model for every combination and find the best performer. 3. **Validate Model (`yolo.py`):** Take the `run_id` of your best experiment and run validation on the hold-out `test` set to get **detection metrics (mAP)**. 4. **Infer & Count (`predict_tiled.py`):** Use the best `run_id` to run sliced inference on new, large images. This script generates final counts and visual outputs. 5. **Evaluate Counts (`evaluate_counts.py`):** Compare the `detection_counts.csv` from inference against the `ground_truth_counts.csv` to get **counting metrics (MAE, RMSE)**. 6. **Visualize (`run_fiftyone.py`):** Visually inspect your ground truth dataset or your model's predictions at any stage. ## Configuration This project uses two separate configuration files, managed by `robbenblick.utils.load_config`. * **`configs/base_config.yaml`** * **Purpose:** The single source of truth for **single runs**. * **Used By:** `create_dataset.py`, `predict_tiled.py`, `run_fiftyone.py`, and `yolo.py` (for validation/single-predict). * **Content:** Defines static parameters like data paths (`dataset_output_dir`), model (`model`), and inference settings (`confidence_thresh`). * **`configs/base_iter_config.yaml`** * **Purpose:** The configuration file for **experiments and tuning**. * **Used By:** `run_experiments.py`. * **Content:** Any parameter defined as a **YAML list** (e.g., `model: [yolov8n.pt, yolov8s.pt]`) will be iterated over. `run_experiments.py` will test every possible combination of all lists. ## Environment Setup 1. Clone the repository: ```sh git clone git@github.com:ki-iw/robbenblick.git cd robbenblick ``` 2. Create the Conda environment: ```sh conda env create --file environment.yml conda activate RobbenBlick ``` 3. (Optional) Install pre-commit hooks: ```sh pre-commit install ``` ## Core Scripts & Usage ### `create_dataset.py` * **Purpose:** Converts raw CVAT-annotated images and XML files into a YOLO-compatible dataset, including tiling and label conversion. * **How it works:** * Loads configuration from a config file. * Scans `data/raw/` for dataset subfolders. * Parses CVAT XML annotations and extracts polygons. * Tiles large images into smaller crops based on `imgsz` and `tile_overlap` from the config. * Converts polygon annotations to YOLO bounding box format for each tile. * Splits data into `train`, `val`, and `test` sets and writes them to `data/processed/dataset_yolo`. * Saves a `ground_truth_counts.csv` file in each raw dataset subfolder, providing a baseline for counting evaluation. * **Run:** ```sh # Do a 'dry run' to see statistics without writing files python -m robbenblick.create_dataset --dry-run --config configs/base_config.yaml # Create the dataset, holding out dataset #4 as the test set python -m robbenblick.create_dataset --config configs/base_config.yaml --test-dir-index 4 ``` * **Key Arguments:** * `--config`: Path to the `base_config.yaml` file. * `--dry-run`: Run in statistics-only mode. * `--test-dir-index`: 1-based index of the dataset subfolder to use as a hold-out test set. * `--val-ratio`: Ratio of the remaining data to use for validation. ### `run_experiments.py` * **Purpose:** **This is the main training script.** It automates hyperparameter tuning by iterating over parameters defined in `base_iter_config.yaml`. * **How it works:** * Finds all parameters in the config file that are lists (e.g., `freeze: [None, 10]`). * Generates a "variant" for every possible combination of these parameters. * For each variant, it calls `yolo.py --mode train` as a subprocess with a unique `run_id`. * After all runs are complete, it reads the `results.csv` from each run directory, sorts them by `mAP50`, and prints a final ranking table. * **Run:** ```sh # Start the experiment run defined in the iteration config python -m robbenblick.run_experiments --config configs/base_iter_config.yaml # Run experiments and only show the top 5 results python -m robbenblick.run_experiments --config configs/base_iter_config.yaml --top-n 5 ``` ### `predict_tiled.py` * **Purpose:** **This is the main inference script.** It runs a trained YOLOv8 model on new, full-sized images using Sliced Aided Hyper Inference (SAHI). * **How it works:** * Loads a trained `best.pt` model specified by the `--run_id` argument. * Loads inference parameters (like `confidence_thresh`, `tile_overlap`) from the `base_config.yaml`. * Uses `get_sliced_prediction` from SAHI to perform tiled inference on each image. * Saves outputs, including visualized images (if `--save-visuals`), YOLO `.txt` labels (if `--save-yolo`), and a `detection_counts.csv` file. * **Run:** ```sh # Run inference on a folder of new images and save the visual results python -m robbenblick.predict_tiled \ --config configs/base_config.yaml \ --run_id "best_run_from_experiments" \ --source "data/new_images_to_count/" \ --output-dir "data/inference_results/" \ --save-visuals ``` ### `evaluate_counts.py` * **Purpose:** Evaluates the *counting* performance of a model by comparing its predicted counts against the ground truth counts. * **How it works:** * Loads the `ground_truth_counts.csv` generated by `create_dataset.py`. * Loads the `detection_counts.csv` generated by `predict_tiled.py`. * Merges them by `image_name`. * Calculates and prints key regression metrics (MAE, RMSE, R²) to assess the accuracy of the object counting. * **Run:** ```sh # Evaluate the counts from a specific run python -m robbenblick.evaluate_counts \ --gt-csv "data/raw/dataset_02/ground_truth_counts.csv" \ --pred-csv "data/inference_results/detection_counts.csv" ``` ### `yolo.py` * **Purpose:** The core engine for training, validation, and standard prediction. This script is called by `run_experiments.py` for training. You can use it directly for validation. * **How it works:** * `--mode train`: Loads a base model (`yolov8s.pt`) and trains it on the dataset specified in the config. * `--mode validate`: Loads a *trained* model (`best.pt` from a run directory) and validates it against the `test` split defined in `dataset.yaml`. This provides **detection metrics (mAP)**. * `--mode predict`: Runs standard (non-tiled) YOLO prediction on a folder. * **Run:** ```sh # Validate the 'test' set performance of a completed run python -m robbenblick.yolo \ --config configs/base_config.yaml \ --mode validate \ --run_id "best_run_from_experiments" ``` ### `run_fiftyone.py` * **Purpose:** Visualizes datasets and predictions using FiftyOne. * **How it works:** * `--dataset groundtruth`: Loads the processed YOLO dataset (images and ground truth labels) from `data/processed/`. * `--dataset predictions`: Loads images, runs a specified model (`--run_id`) on them, and displays the model's predictions. * **Run:** ```sh # View the ground truth annotations for the 'val' split python -m robbenblick.run_fiftyone \ --config configs/base_config.yaml \ --dataset groundtruth \ --split val \ --recreate # View the predictions from 'my_best_run' on the 'test' split python -m robbenblick.run_fiftyone \ --config configs/base_config.yaml \ --dataset predictions \ --split test \ --run_id "my_best_run" \ --recreate ``` ### `streamlit_app.py` * **Purpose:** Quick test runs with the trained model of your choice for counting the seals in the image(s) and visualization. * **How it works:** * Loads the selected YOLO model from `runs/detect/`. * Upload images, run model, then displays the counts and model's predictions as image visualization. * **Run:** ```sh # View the ground truth annotations for the 'val' split export PYTHONPATH=$PWD && streamlit run robbenblick/streamlit_app.py ``` ## Recommended Full Workflow 1. **Add Raw Data:** * Place your first set of images and annotations in `data/raw/dataset_01/images/` and `data/raw/dataset_01/annotations.xml`. * Place your second set (e.g., from a different location) in `data/raw/dataset_02/images/` and `data/raw/dataset_02/annotations.xml`. 2. **Create Dataset:** * Run `python -m robbenblick.create_dataset --dry-run` to see your dataset statistics. Note the indices of your datasets. * Let's say `dataset_02` is a good hold-out set. Run: `python -m robbenblick.create_dataset --config configs/base_config.yaml --test-dir-index 2` * This creates `data/raw/dataset_02/ground_truth_counts.csv` for later. 3. **Find Best Model:** * Edit `configs/base_iter_config.yaml`. Define your experiments. ```yaml # Example: Test two models and two freeze strategies model: ['yolov8s.pt', 'yolov8m.pt'] freeze: [None, 10] yolo_hyperparams: scale: [0.3, 0.5] ``` * Run the experiments: `python -m robbenblick.run_experiments`. * Note the `run_id` of the top-ranked model, e.g., `iter_run_model_yolov8m.pt_freeze_10_scale_0.3`. 4. **Validate on Test Set (Detection mAP):** * Check your best model's performance on the unseen test data: `python -m robbenblick.yolo --mode validate --run_id "iter_run_model_yolov8m.pt_freeze_10_scale_0.3" --config configs/base_config.yaml` * This tells you how well it *detects* objects (mAP). 5. **Apply Model for Counting:** * Get a new folder of large, un-annotated images (e.g., `data/to_be_counted/`). * Run `predict_tiled.py`: `python -m robbenblick.predict_tiled --run_id "iter_run_model_yolov8m.pt_freeze_10_scale_0.3" --source "data/to_be_counted/" --output-dir "data/final_counts/" --save-visuals` * This creates `data/final_counts/detection_counts.csv`. 6. **Evaluate Counting Performance (MAE, RMSE):** * Now, compare the predicted counts (Step 5) with the ground truth counts (Step 2). Let's assume your "to_be_counted" folder *was* your `dataset_02`. `python -m robbenblick.evaluate_counts --gt-csv "data/raw/dataset_02/ground_truth_counts.csv" --pred-csv "data/final_counts/detection_counts.csv"` * This gives you the final MAE, RMSE, and R² metrics for your **counting task**. ## Additional Notes This repository contains only the source code of the project. The training data and the fine-tuned model weights are not included or published. The repository is currently not being actively maintained. Future updates are not planned at this time. For transparency, please note that the underlying model used throughout this project is based on **YOLOv8 by Ultralytics**. ## License Copyright (c) 2025 **Birds on Mars**. This project is licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**. This aligns with the license of the underlying **YOLOv8** model architecture used in this project. Please note: **Training data and fine-tuned model weights are not part of the licensed materials** and are not included in this repository. For full details, see the LICENSE file. ## Troubleshooting ### FiftyOne: images (partially) not visible Try using `--recreate` flag to force FiftyOne to reload the dataset: ```sh python robbenblick/run_fiftyone.py --dataset groundtruth --split val --recreate ``` ### FiftyOne: failed to bind port If you get: ``` fiftyone.core.service.ServiceListenTimeout: fiftyone.core.service.DatabaseService failed to bind to port ``` Try killing any lingering `fiftyone` or `mongod` processes: ```sh pkill -f fiftyone pkill -f mongod Then rerun your script. ``` # Collaborators The code for this project has been developed through a collaborative effort between [WWF Büro Ostsee](https://www.wwf.de/themen-projekte/projektregionen/ostsee) and [KI-Ideenwerkstatt](https://www.ki-ideenwerkstatt.de), technical implementation by [Birds on Mars](https://birdsonmars.com). <p></p> <a href="https://ki-ideenwerkstatt.de" target="_blank" rel="noopener noreferrer"> <img src="assets/kiiw.jpg" alt="KI Ideenwerkstatt" height="100"> </a> <p></p> Technical realization <br> <a href="https://birdsonmars.com" target="_blank" rel="noopener noreferrer"> <img src="assets/bom.jpg" alt="Birds On Mars" height="100"> </a> <p></p> An AI initiative by <br> <a href="https://www.bundesumweltministerium.de/" target="_blank" rel="noopener noreferrer"> <img src="assets/bmukn.svg" alt="Bundesministerium für Umwelt, Klimaschutz, Naturschutz und nukleare Sicherheit" height="100"> </a> <p></p> In the context of <br> <a href="https://civic-coding.de" target="_blank" rel="noopener noreferrer"> <img src="assets/civic.svg" alt="Civic Coding" height="100"> </a>

Einsatz alternativer Verfahren zur Waermebereitstellung in GDRA

Im Rahmen des Projektes werden die Gestehungskosten fuer die Gasdruckregelung ueber den gesamten Lebenszyklus der GDRA bilanziert und auf der Basis von Messwerten der EVG mbH verifiziert. Das vorgeschlagene Rechenverfahren integriert explizit die Kosten fuer die Gasvorwaermung und greift die Struktur der VDI 2067 bzw. VDI 6025 auf. Neben der Kostenbetrachtung wurde parallel der Bezug zum Primaerenergiebedarf und den Treibhausgasemissionen, bewertet im CO2-Massstab hergestellt. Das Problem der Erdgasvorwaermung wird separat behandelt. Optimierungsmoeglichkeiten im Bereich der Waermebereitstellung werden abgeleitet.

Wasserleitungen (überregional) im Landkreis Osnabrück

Rohrleitung von größerem Durchmesser zum Fördern von Flüssigkeiten. In diesem Fall Trinkwasser.

Technische Befahrbarkeit von Waldflächen in Sachsen - linienhafte Hindernisse

Der Datensatz enthält Informationen zu linienhaften Hindernissen (Befahrungshindernisse), die für die technische Befahrbarkeit von Waldflächen ins Sachsen relevant sind. Befahrungshindernisse sind ständig wasserführende Flüsse, Bäche, Kanäle und Gräben, oberirdische Rohrleitungen, kleinflächige Felsen, trockene Gräben und kleinflächig feuchte Standorte. Unter der technischen Befahrbarkeit versteht man die Möglichkeit, Forstmaschinen und andere forstliche Technik für die Bestandespflege- und Holzerntemaßnahmen einzusetzen, ohne dabei das Feinerschließungswegenetz mit wegebaulichen Maßnahmen zu befestigen. Zu jeder Waldfläche wird die standortsabhängige Befahrbarkeitsklasse, die Hangneigungsklasse sowie die Sensibilitätsklasse angegeben. Die Befahrbarkeitsklassen B1 (befahrbar) bis B5 (nicht befahrbar) beschreiben die Eignung des Bodens als befahrbare Unterlage. Die Sensibilitätsklassen S1 (wenig sensibel) und S2 (sensibel) beschreiben die Empfindlichkeit des Bodens für befahrungsbedingte ökologisch wirksame Veränderungen. Der Datensatz ist eine Grundlage für die Feinerschließungskarte, die Befahrbarkeitskarte sowie für die Technologische Karte von Sachsen. Ausführliche Informationen sind der Richtlinie "Holztechnologien" des Staatsbetriebes Sachsenforst zu entnehmen.

Mathematische Erfassung des Abflussvorganges bei der pneumatischen Spuelung von Leitungen

Die pneumatische Spuelung stellt eine Moeglichkeit der Wasserforschung mittels Druckluft in Rohrleitungen dar. Das Wasser wird bei einer Spuelung mit Hilfe der Druckluft mit relativ hoher Geschwindigkeit ganz oder teilweise aus der Leistung gedrueckt. Der Zusammenhang zwischen Luftdruck und Abflussgeschwindigkeit bei einer pneumatischen Spuelung soll allgemeingueltig theoretisch hergeleitet werden und durch Versuche und eventuell an bestehenden Anlagen ueberprueft werden.

Schwerpunktprogramm (SPP) 527: Bereich Infrastruktur - International Ocean Discovery Program, Teilprojekt: Änderungen der pazifischen meridionalen Umwälzzirkulation während des miozänen Klimaoptimums und der darauffolgenden Etablierung einer stabilen polaren Eiskappe

Während der IODP Expedition 363 wurde erstmals eine mächtige und ungestörte Sedimentabfolge im Zentrum des Westpazifischen Warmwasserpools erbohrt (Site U1490, 05 Grad 48.95Ê1N, 142 Grad 39.27Ê1E in 2341 m Wassertiefe vor Papua New Guinea). Diese karbonat- und tonreiche Abfolge stellt ein ideales Sedimentarchiv dar, um an einer strategischen Position Änderungen in der Struktur der pazifischen Wassermassen und meridionalen Umwälzzirkulation während unterschiedlicher Phasen der Klimaentwicklung der Erde während des Überganges von einer nahezu eisfreien zu einer Erde mit einer stabilen polaren Eiskappe zu erfassen. Unser Projekt konzentriert sich dabei auf das Zeitintervall von ca. 18 bis 9 Millionen Jahren, das durch mehrere fundamentale Klimaänderungen charakterisiert war und es damit ermöglicht, die Zusammenhänge zwischen Änderungen in der Erdbestrahlung, Variabilität der Temperaturgradienten zwischen Äquator und polaren Breiten und Verschiebungen in der atmosphärischen und Ozean-Zirkulation auf einer wärmeren Erde zu untersuchen. Daneben ist Site U1490 von ca.18 bis 9 Millionen Jahren vor heute durch eine aussergewöhnlich gut belegte Magnetostratigraphie charakterisiert, die erstmals eine direkte Korrelation einer hochauflösenden Isotopen-Zyklostratigraphie mit der Geomagnetischen Polaritäts-Zeitskala (GPTS) ermöglicht. Durch diese verifizierte und verfeinerte Chronostratigraphie werden die benthischen stabilen Isotopen- und Karbonatakkumulationsdaten in Site U1490 wesentlich zum Verständnis des zeitlichen Ablaufs der Änderungen in der pazifischen Tiefenwasser-Zirkulation und deren Wechselwirkungen mit dem Klimawandel in niedrigen und hohen Breiten beitragen. Im Detail wollen wir mit diesen neuen Daten die folgenden Hypothesen überprüfen: (1) Änderungen des Äquator-Pol Temperaturgradienten wirken sich stark auf die Bildung von tiefen und intermediären Wassermassen und die Intensität der pazifischen meridionalen Umwälzzirkulation aus; (2) die Expansion korrosiver intermediärer und tiefer Wassermassen aus dem Südozean und die Abschwächung der Tiefenventilation infolge der Ausdehnung des antarktischen Eisschildes während des mittelmiozänen Klimaübergangs trug zu erhöhter CO2-Speicherung im Tiefenwasser und zur Karbonatarmut in den Tiefsee-Sedimenten des Pazifischen und Indischen Ozeans bei; (3) der Indonesische Durchstrom spielte im mittleren Miozän noch eine Schlüsselrolle für den Austausch intermediärer und tiefer Wassermassen zwischen Pazifik und Indischem Ozean mit entprechenden Auswirkungen auf das Wärmebudget und die Wechselwirkungen zwischen Ozean und Atmosphäre im Indischen Ozean.

FH-Kooperativ 1-2020: Schalltechnische Planungsgrundlagen für Rohrleitungen und Befestigungselemente, FH-Kooperativ 1-2020: Schalltechnische Planungsgrundlagen für Rohrleitungen und Befestigungselemente (SPlanRoB)

Wasserversorgungsnetz der Stadtwerke Einbeck GmbH

Die Stadtwerke Einbeck GmbH versorgen neben der Kernstadt 46 Ortsteile mit Wasser. Für die Altgemeinde Kreiensen ist die Netzbetriebs­führungs­gesellschaft mbH WVEK verantwortlich. Die Abrechnung sowie der Kunden­service übernehmen wir für Sie. Die Ortsteile Dassensen und Holtensen werden aus den Wassergewinnungsanlagen des WAZ Sollings versorgt. Der Ortsteil Sievershausen hat eine eigene Wasserversorgung. Das Leitungsnetz ist zum Teil mit Maßangaben versehen. Es gibt aber auch Bereiche in der die Lage und Dimension von Leitungen nicht bekannt ist. Die Daten sind nicht einsehbar, sie werden bei berechtigtem Interesse im PDF-Format abgegeben.

Trinkwasserverteilernetz Osnabrück

Der Datensatz umfasst das Trinkwasserleitungsnetz der SWO Netz GmbH für das Versorgungsgebiet der Stadt Osnabrück.

1 2 3 4 5171 172 173