From 7fa43ea8b1acff20660c2a1d90bc05ec8ef4c8c9 Mon Sep 17 00:00:00 2001 From: Bernd Weymann Date: Sat, 15 Jun 2024 19:38:55 +0200 Subject: [PATCH] [pegelonline] Initial contribution (#16831) * initial version Signed-off-by: Bernd Weymann --- CODEOWNERS | 1 + bom/openhab-addons/pom.xml | 5 + .../org.openhab.binding.pegelonline/NOTICE | 13 + .../org.openhab.binding.pegelonline/README.md | 122 + .../doc/Marburg.png | Bin 0 -> 183677 bytes .../org.openhab.binding.pegelonline/pom.xml | 17 + .../src/main/feature/feature.xml | 9 + .../internal/PegelOnlineBindingConstants.java | 63 + .../internal/PegelOnlineHandlerFactory.java | 60 + .../config/PegelOnlineConfiguration.java | 81 + .../internal/discovery/PegelDiscovery.java | 122 + .../pegelonline/internal/dto/Measure.java | 26 + .../pegelonline/internal/dto/Station.java | 30 + .../pegelonline/internal/dto/Water.java | 23 + .../internal/handler/PegelOnlineHandler.java | 178 + .../pegelonline/internal/utils/Utils.java | 73 + .../src/main/resources/OH-INF/addon/addon.xml | 12 + .../OH-INF/i18n/pegelonline.properties | 58 + .../resources/OH-INF/thing/thing-types.xml | 94 + .../internal/handler/CallbackMock.java | 156 + .../internal/handler/PegelTest.java | 375 + .../pegelonline/internal/util/FileReader.java | 48 + .../src/test/resources/measure.json | 7 + .../src/test/resources/rivers.json | 100 + .../src/test/resources/stations.json | 9381 +++++++++++++++++ bundles/pom.xml | 1 + 26 files changed, 11055 insertions(+) create mode 100644 bundles/org.openhab.binding.pegelonline/NOTICE create mode 100644 bundles/org.openhab.binding.pegelonline/README.md create mode 100644 bundles/org.openhab.binding.pegelonline/doc/Marburg.png create mode 100644 bundles/org.openhab.binding.pegelonline/pom.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/feature/feature.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineBindingConstants.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineHandlerFactory.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/config/PegelOnlineConfiguration.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/discovery/PegelDiscovery.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Measure.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Station.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Water.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/handler/PegelOnlineHandler.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/utils/Utils.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/addon/addon.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/i18n/pegelonline.properties create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/thing/thing-types.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/CallbackMock.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/PegelTest.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/util/FileReader.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/resources/measure.json create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/resources/rivers.json create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/resources/stations.json diff --git a/CODEOWNERS b/CODEOWNERS index 07394845a67a4..0496f7b8dff55 100755 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -278,6 +278,7 @@ /bundles/org.openhab.binding.orvibo/ @tavalin /bundles/org.openhab.binding.panasonicbdp/ @mlobstein /bundles/org.openhab.binding.paradoxalarm/ @theater +/bundles/org.openhab.binding.pegelonline/ @weymann /bundles/org.openhab.binding.pentair/ @jsjames /bundles/org.openhab.binding.phc/ @gnlpfjh /bundles/org.openhab.binding.pilight/ @stefanroellin @niklasdoerfler diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml index a87a21c20000a..95da35babef3a 100644 --- a/bom/openhab-addons/pom.xml +++ b/bom/openhab-addons/pom.xml @@ -1381,6 +1381,11 @@ org.openhab.binding.paradoxalarm ${project.version} + + org.openhab.addons.bundles + org.openhab.binding.pegelonline + ${project.version} + org.openhab.addons.bundles org.openhab.binding.pentair diff --git a/bundles/org.openhab.binding.pegelonline/NOTICE b/bundles/org.openhab.binding.pegelonline/NOTICE new file mode 100644 index 0000000000000..38d625e349232 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/NOTICE @@ -0,0 +1,13 @@ +This content is produced and maintained by the openHAB project. + +* Project home: https://www.openhab.org + +== Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Public License 2.0 which is available at +https://www.eclipse.org/legal/epl-2.0/. + +== Source Code + +https://github.com/openhab/openhab-addons diff --git a/bundles/org.openhab.binding.pegelonline/README.md b/bundles/org.openhab.binding.pegelonline/README.md new file mode 100644 index 0000000000000..b4a3cd0e8648e --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/README.md @@ -0,0 +1,122 @@ +# PegelOnline Binding + +Binding to observe water level from german rivers. +Data is provided by german **Water-Route and Shipping Agency** [WSV](https://www.pegelonline.wsv.de/). +Goal is to monitor actual water levels from rivers nearby your home. +In case of changing water levels the corresponding warning level is lowered or raised. + +## Supported Things + +| Label | Description | ID | +|---------------------|---------------------------------------------------------------------------------|---------| +| Measurement Station | Station providing water level measurements | station | + + +## Discovery + +In case your home location coordinates are set the discovery will recognize all measurement stations within a radius of 50 km. +Found Things are added in your Inbox. + + +## Thing Configuration + +Thing configuration contains 3 sections + +* [Station selection](station_selection) +* [Warning Levels of selected station](warning_levels) +* [Refresh rate](configuration_parameters) + +### Station selection + +Stations can be selected with an Universally Unique Identifier (uuid). +It's automatically added by the Discovery. +Configure a station manually using [list of all available stations](https://pegelonline.wsv.de/gast/pegeltabelle) or [stations.json](https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json) and choose the uuid of your desired measurement station. + +### Warning Levels + + + +Each station has specific warning levels + +* Warning Levels 1 (*lowest*) to 3 (*highest*) +* Flooding Levels + +Unfortunately these levels cannot be queried automatically. +Please select your [federal state](https://www.hochwasserzentralen.de/) and check if which levels they provide. +The picture shows the levels of [measurement station Marburg of federal state Hesse](https://www.hlnug.de/static/pegel/wiskiweb2/stations/25830056/station.html?v=20210802152952) + +If you cannot evaluate warning or flooding levels leave the parameter empty. + +### Configuration parameters + +| configuration | content | unit | description | required | default | +|------------------|-----------|------|---------------------------|----------|---------| +| uuid | text | - | Unique Station Identifier | X | N/A | +| warningLevel1 | integer | cm | Warning Level 1 | | N/A | +| warningLevel2 | integer | cm | Warning Level 2 | | N/A | +| warningLevel3 | integer | cm | Warning Level 3 | | N/A | +| hq10 | integer | cm | Decade Flooding | | N/A | +| hq100 | integer | cm | Century Flooding | | N/A | +| hqExtreme | integer | cm | Extreme Flooding | | N/A | +| refreshInterval | integer | min | Refresh Interval | X | 15 | + +## Channels + + +| channel id | type | description | +|----------------------|----------------------|--------------------------------| +| timestamp | DateTime | Last Measurement | +| level | Number:Length | Water Level | +| trend | Number | Water Level Trend | +| warning | Number | Current Warning | + +### Trend + +Possible values: + +* 1 : Rising +* 0 : Steady +* -1 : Lowering + +### Warning + +Current warning according to configuration + +* 0 : No Warning +* 1 : Warning level 1 +* 2 : Warning Level 2 +* 3 : Warning Level 3 +* 4 : Decade Flooding +* 5 : Century Flooding +* 6 : Extreme Flooding + +## Full Example + +### Things + +```java +Thing pegelonline:station:giessen "Measurement Station Giessen" [ + uuid="4b386a6a-996e-4a4a-a440-15d6b40226d4", + refreshInterval=15, + warningLevel1=550, + warningLevel2=600, + warningLevel3=650, + hq10=732, + hq100=786 +] +``` + +### Items + +```java +DateTime Lahn_Giessen_Timestamp "Measurement timestamp Lahn Giessen" {channel="pegelonline:station:giessen:timestamp" } +Number:Length Lahn_Giessen_Level "Water Level Lahn Giessen]" {channel="pegelonline:station:giessen:level" } +Number Lahn_Giessen_Trend "Water Level Trend Lahn Giessen" {channel="pegelonline:station:giessen:trend"} +Number Lahn_Giessen_Warning "Warning Level Lahn Giessen" {channel="pegelonline:station:giessen:warning"} +``` + + +## Links + +[PegelOnline API Documentation](https://www.pegelonline.wsv.de/webservice/dokuRestapi#caching) + diff --git a/bundles/org.openhab.binding.pegelonline/doc/Marburg.png b/bundles/org.openhab.binding.pegelonline/doc/Marburg.png new file mode 100644 index 0000000000000000000000000000000000000000..d601402d38f2304f6aeb5c7dc4910ef52a25de4f GIT binary patch literal 183677 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

>iLDPA5POFcBcFk%-qQ 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 + + + 4.0.0 + + + org.openhab.addons.bundles + org.openhab.addons.reactor.bundles + 4.2.0-SNAPSHOT + + + org.openhab.binding.pegelonline + + openHAB Add-ons :: Bundles :: PegelOnline Binding + + diff --git a/bundles/org.openhab.binding.pegelonline/src/main/feature/feature.xml b/bundles/org.openhab.binding.pegelonline/src/main/feature/feature.xml new file mode 100644 index 0000000000000..1d8625edfb069 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/feature/feature.xml @@ -0,0 +1,9 @@ + + + mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features + + + openhab-runtime-base + mvn:org.openhab.addons.bundles/org.openhab.binding.pegelonline/${project.version} + + diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineBindingConstants.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineBindingConstants.java new file mode 100644 index 0000000000000..ef000e145c2e0 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineBindingConstants.java @@ -0,0 +1,63 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal; + +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.library.types.PointType; +import org.openhab.core.thing.ThingTypeUID; + +import com.google.gson.Gson; + +/** + * The {@link PegelOnlineBindingConstants} class defines common constants, which are + * used across the whole binding. + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +public class PegelOnlineBindingConstants { + + private static final String BINDING_ID = "pegelonline"; + + // List of all Thing Type UIDs + public static final ThingTypeUID STATION_THING = new ThingTypeUID(BINDING_ID, "station"); + public static final Set SUPPORTED_THING_TYPES_UIDS = Set.of(STATION_THING); + + // List of all Channel ids + public static final String TIMESTAMP_CHANNEL = "timestamp"; + public static final String LEVEL_CHANNEL = "level"; + public static final String TREND_CHANNEL = "trend"; + public static final String WARNING_CHANNEL = "warning"; + + public static final int NO_WARNING = 0; + public static final int WARN_LEVEL_1 = 1; + public static final int WARN_LEVEL_2 = 2; + public static final int WARN_LEVEL_3 = 3; + public static final int HQ10 = 4; + public static final int HQ100 = 5; + public static final int HQ_EXTREME = 6; + + public static final Gson GSON = new Gson(); + + public static final String STATIONS_URI = "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations"; + public static final double DISCOVERY_RADIUS = 50; + public static final PointType UNDEF_LOCATION = PointType.valueOf("-1,-1"); + + public static final String SPACE = " "; + public static final String UNDERLINE = "_"; + public static final String HYPHEN = " - "; + public static final String EMPTY = ""; + public static final String UNKNOWN = "Unknown"; +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineHandlerFactory.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineHandlerFactory.java new file mode 100644 index 0000000000000..b6c4d6241ec12 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineHandlerFactory.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal; + +import static org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants.STATION_THING; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.pegelonline.internal.handler.PegelOnlineHandler; +import org.openhab.core.i18n.LocationProvider; +import org.openhab.core.io.net.http.HttpClientFactory; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.binding.BaseThingHandlerFactory; +import org.openhab.core.thing.binding.ThingHandler; +import org.openhab.core.thing.binding.ThingHandlerFactory; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * The {@link PegelOnlineHandlerFactory} is responsible for creating things and thing + * handlers. + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +@Component(configurationPid = "binding.pegelonline", service = ThingHandlerFactory.class) +public class PegelOnlineHandlerFactory extends BaseThingHandlerFactory { + private final HttpClientFactory httpClientFactory; + + @Activate + public PegelOnlineHandlerFactory(final @Reference HttpClientFactory hcf, final @Reference LocationProvider lp) { + httpClientFactory = hcf; + } + + @Override + public boolean supportsThingType(ThingTypeUID thingTypeUID) { + return PegelOnlineBindingConstants.SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID); + } + + @Override + protected @Nullable ThingHandler createHandler(Thing thing) { + ThingTypeUID thingTypeUID = thing.getThingTypeUID(); + if (STATION_THING.equals(thingTypeUID)) { + return new PegelOnlineHandler(thing, httpClientFactory.getCommonHttpClient()); + } + return null; + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/config/PegelOnlineConfiguration.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/config/PegelOnlineConfiguration.java new file mode 100644 index 0000000000000..db5dce90137df --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/config/PegelOnlineConfiguration.java @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.config; + +import static org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants.*; + +import java.util.Map.Entry; +import java.util.TreeMap; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * The {@link PegelOnlineConfiguration} class contains fields mapping thing configuration parameters. + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +public class PegelOnlineConfiguration { + public String uuid = UNKNOWN; + public int warningLevel1 = Integer.MAX_VALUE; + public int warningLevel2 = Integer.MAX_VALUE; + public int warningLevel3 = Integer.MAX_VALUE; + public int hq10 = Integer.MAX_VALUE; + public int hq100 = Integer.MAX_VALUE; + public int hqExtreme = Integer.MAX_VALUE; + public int refreshInterval = 15; + + public boolean uuidCheck() { + // https://stackoverflow.com/questions/20041051/how-to-judge-a-string-is-uuid-type + return uuid.matches("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"); + } + + /** + * Check if configured warning levels are in ascending order + * + * @return true if ascending, false otherwise + */ + public boolean warningCheck() { + TreeMap warnMap = this.getWarnings(); + Entry currentEntry = warnMap.firstEntry(); + Entry nextEntry = warnMap.higherEntry(currentEntry.getKey()); + while (nextEntry != null) { + // ignore non configured values + if (nextEntry.getKey() != Integer.MAX_VALUE) { + if (nextEntry.getValue() < currentEntry.getValue()) { + return false; + } + } + currentEntry = nextEntry; + nextEntry = warnMap.higherEntry(currentEntry.getKey()); + } + return true; + } + + /** + * Calculate sorted map with level height and warning level based on configuration + * + * @return TreeMap with keys containing level height and values containing warning level + */ + public TreeMap getWarnings() { + TreeMap warnMap = new TreeMap<>(); + warnMap.put(0, NO_WARNING); + warnMap.put(warningLevel1, WARN_LEVEL_1); + warnMap.put(warningLevel2, WARN_LEVEL_2); + warnMap.put(warningLevel3, WARN_LEVEL_3); + warnMap.put(hq10, HQ10); + warnMap.put(hq100, HQ100); + warnMap.put(hqExtreme, HQ_EXTREME); + return warnMap; + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/discovery/PegelDiscovery.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/discovery/PegelDiscovery.java new file mode 100644 index 0000000000000..b68bf097ce0d5 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/discovery/PegelDiscovery.java @@ -0,0 +1,122 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.discovery; + +import static org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants.*; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.api.ContentResponse; +import org.openhab.binding.pegelonline.internal.dto.Station; +import org.openhab.binding.pegelonline.internal.handler.PegelOnlineHandler; +import org.openhab.binding.pegelonline.internal.utils.Utils; +import org.openhab.core.config.discovery.AbstractDiscoveryService; +import org.openhab.core.config.discovery.DiscoveryResultBuilder; +import org.openhab.core.config.discovery.DiscoveryService; +import org.openhab.core.i18n.LocationProvider; +import org.openhab.core.io.net.http.HttpClientFactory; +import org.openhab.core.library.types.PointType; +import org.openhab.core.thing.ThingUID; +import org.openhab.core.thing.binding.ThingHandler; +import org.openhab.core.thing.binding.ThingHandlerService; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * {@link PegelDiscovery} Discovery of measurement stations + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +@Component(service = DiscoveryService.class, immediate = true, configurationPid = "discovery.pegelonline") +public class PegelDiscovery extends AbstractDiscoveryService implements ThingHandlerService { + private final Logger logger = LoggerFactory.getLogger(PegelDiscovery.class); + private Optional handler = Optional.empty(); + private PointType homeLocation = UNDEF_LOCATION; + private HttpClientFactory httpClientFactory; + + @Activate + public PegelDiscovery(final @Reference HttpClientFactory hcf, final @Reference LocationProvider lp) { + super(SUPPORTED_THING_TYPES_UIDS, 10, false); + httpClientFactory = hcf; + PointType location = lp.getLocation(); + if (location != null) { + homeLocation = location; + } else { + logger.debug("No home location found"); + } + } + + @Override + protected void startScan() { + double homeLat = homeLocation.getLatitude().doubleValue(); + double homeLon = homeLocation.getLongitude().doubleValue(); + try { + ContentResponse cr = httpClientFactory.getCommonHttpClient().GET(STATIONS_URI); + Station[] stationArray = GSON.fromJson(cr.getContentAsString(), Station[].class); + if (stationArray != null) { + for (Station station : stationArray) { + double distance = Utils.calculateDistance(homeLat, homeLon, station.latitude, station.longitude); + if (distance < DISCOVERY_RADIUS) { + logger.trace("Station in range {},{}", station.longname, station.water.shortname); + reportResult(station); + } + } + } else { + logger.trace("No stations found in discovery"); + } + } catch (ExecutionException | TimeoutException | InterruptedException e) { + logger.trace("Exception during station discovery: {}", e.getMessage()); + } + } + + public void reportResult(Station s) { + String label = "Pegel Station " + Utils.toTitleCase(s.shortname) + " / " + Utils.toTitleCase(s.water.shortname); + Map properties = new HashMap(); + properties.put("agency", s.agency); + properties.put("km", s.km); + properties.put("river", s.water.longname); + properties.put("station", s.longname); + properties.put("uuid", s.uuid); + properties.put("location", s.latitude + "," + s.longitude); + ThingUID uid = new ThingUID(STATION_THING, s.uuid); + thingDiscovered(DiscoveryResultBuilder.create(uid).withRepresentationProperty("uuid").withLabel(label) + .withProperties(properties).build()); + } + + @Override + public void deactivate() { + super.deactivate(); + } + + @Override + public void setThingHandler(ThingHandler thingHandler) { + if (thingHandler instanceof PegelOnlineHandler pegelOnlineHandler) { + handler = Optional.of(pegelOnlineHandler); + } + } + + @Override + public @Nullable ThingHandler getThingHandler() { + return handler.orElse(null); + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Measure.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Measure.java new file mode 100644 index 0000000000000..d000aae72afc0 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Measure.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.dto; + +/** + * {@link Measure} DTO for water level measurements + * + * @author Bernd Weymann - Initial contribution + */ +public class Measure { + public String timestamp; // "2021-07-31T19:00:00+02:00", + public double value; // ":238.0, + public int trend; // -1, + public String stateMnwMhw; // "normal", + public String stateNswHsw; // "unknown" +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Station.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Station.java new file mode 100644 index 0000000000000..d04eb90c1d0d5 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Station.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.dto; + +/** + * {@link Station} DTO for measurement Station + * + * @author Bernd Weymann - Initial contribution + */ +public class Station { + public String uuid; // "47174d8f-1b8e-4599-8a59-b580dd55bc87", + public long number; // "48900237", + public String shortname; // "EITZE", + public String longname; // "EITZE", + public double km; // 9.56, + public String agency; // : "WSA VERDEN", + public double longitude; // 9.27676943537587, + public double latitude; // 52.90406541008721, + public Water water; +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Water.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Water.java new file mode 100644 index 0000000000000..131fcb93d5966 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Water.java @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.dto; + +/** + * {@link Station} DTO for river naming + * + * @author Bernd Weymann - Initial contribution + */ +public class Water { + public String shortname; // "ALLER", + public String longname; // "ALLER" +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/handler/PegelOnlineHandler.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/handler/PegelOnlineHandler.java new file mode 100644 index 0000000000000..bb4b1464790fb --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/handler/PegelOnlineHandler.java @@ -0,0 +1,178 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.handler; + +import static org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants.*; + +import java.util.Optional; +import java.util.TreeMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.api.ContentResponse; +import org.openhab.binding.pegelonline.internal.config.PegelOnlineConfiguration; +import org.openhab.binding.pegelonline.internal.dto.Measure; +import org.openhab.core.config.core.Configuration; +import org.openhab.core.library.types.DateTimeType; +import org.openhab.core.library.types.DecimalType; +import org.openhab.core.library.types.QuantityType; +import org.openhab.core.library.unit.MetricPrefix; +import org.openhab.core.library.unit.SIUnits; +import org.openhab.core.thing.ChannelUID; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; +import org.openhab.core.thing.binding.BaseThingHandler; +import org.openhab.core.types.Command; +import org.openhab.core.types.RefreshType; +import org.openhab.core.types.State; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The {@link PegelOnlineHandler} is responsible for handling commands, which are + * sent to one of the channels. + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +public class PegelOnlineHandler extends BaseThingHandler { + private static final String STATIONS_URI = "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations"; + private final Logger logger = LoggerFactory.getLogger(PegelOnlineHandler.class); + private Optional configuration = Optional.empty(); + private Optional> schedule = Optional.empty(); + private Optional cache = Optional.empty(); + private TreeMap warnMap = new TreeMap<>(); + private String stationUUID = UNKNOWN; + private HttpClient httpClient; + + public PegelOnlineHandler(Thing thing, HttpClient hc) { + super(thing); + httpClient = hc; + } + + @Override + public void handleCommand(ChannelUID channelUID, Command command) { + if (command instanceof RefreshType) { + if (cache.isPresent()) { + Measure m = cache.get(); + if (LEVEL_CHANNEL.equals(channelUID.getId())) { + updateChannelState(LEVEL_CHANNEL, QuantityType.valueOf(m.value, MetricPrefix.CENTI(SIUnits.METRE))); + } else if (TREND_CHANNEL.equals(channelUID.getId())) { + updateChannelState(TREND_CHANNEL, DecimalType.valueOf(Integer.toString(m.trend))); + } else if (TIMESTAMP_CHANNEL.equals(channelUID.getId())) { + updateChannelState(TIMESTAMP_CHANNEL, DateTimeType.valueOf(m.timestamp)); + } else if (WARNING_CHANNEL.equals(channelUID.getId())) { + updateChannelState(WARNING_CHANNEL, + DecimalType.valueOf(Integer.toString(warnMap.floorEntry((int) m.value).getValue()))); + } + } + } + } + + @Override + public void initialize() { + PegelOnlineConfiguration config = getConfigAs(PegelOnlineConfiguration.class); + stationUUID = config.uuid; + if (!config.uuidCheck()) { + String description = "@text/pegelonline.handler.status.uuid [\"" + stationUUID + "\"]"; + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, description); + return; + } + if (!config.warningCheck()) { + String description = "@text/pegelonline.handler.status.warning"; + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, description); + return; + } + warnMap = config.getWarnings(); + configuration = Optional.of(config); + String description = "@text/pegelonline.handler.status.wait-feedback"; + updateStatus(ThingStatus.UNKNOWN, ThingStatusDetail.NONE, description); + schedule = Optional.of(scheduler.scheduleWithFixedDelay(this::performMeasurement, 0, + configuration.get().refreshInterval, TimeUnit.MINUTES)); + } + + @Override + public void dispose() { + warnMap.clear(); + if (schedule.isPresent()) { + schedule.get().cancel(true); + } + schedule = Optional.empty(); + } + + @Override + public void updateConfiguration(Configuration configuration) { + super.updateConfiguration(configuration); + } + + void performMeasurement() { + try { + ContentResponse cr = httpClient.GET(STATIONS_URI + "/" + stationUUID + "/W/currentmeasurement.json"); + int responseStatus = cr.getStatus(); + if (responseStatus == 200) { + String content = cr.getContentAsString(); + Measure measureDto = GSON.fromJson(content, Measure.class); + if (isValid(measureDto) && measureDto != null) { + updateStatus(ThingStatus.ONLINE); + updateChannels(measureDto); + } else { + String description = "@text/pegelonline.handler.status.json-error [\"" + content + "\"]"; + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, description); + } + } else if (responseStatus == 404) { + // 404 respoonse shows station isn't found + String description = "@text/pegelonline.handler.status.uuid-not-found [\"" + stationUUID + "\"]"; + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, description); + } else { + String description = "@text/pegelonline.handler.status.http-status [\"" + responseStatus + "\"]"; + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, description); + } + } catch (InterruptedException | ExecutionException | TimeoutException e) { + String description = "@text/pegelonline.handler.status.http-exception [\"" + e.getMessage() + "\"]"; + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, description); + } + } + + private boolean isValid(@Nullable Measure measureDto) { + if (measureDto != null) { + if (measureDto.timestamp != null) { + try { + DateTimeType.valueOf(measureDto.timestamp); + return true; + } catch (Exception e) { + logger.trace("Error converting {} into DateTime: {}", measureDto.timestamp, e.getMessage()); + } + } + } + return false; + } + + private void updateChannels(Measure measureDto) { + cache = Optional.of(measureDto); + updateChannelState(TIMESTAMP_CHANNEL, DateTimeType.valueOf(measureDto.timestamp)); + updateChannelState(LEVEL_CHANNEL, QuantityType.valueOf(measureDto.value, MetricPrefix.CENTI(SIUnits.METRE))); + updateChannelState(TREND_CHANNEL, DecimalType.valueOf(Integer.toString(measureDto.trend))); + updateChannelState(WARNING_CHANNEL, + DecimalType.valueOf(Integer.toString(warnMap.floorEntry((int) measureDto.value).getValue()))); + } + + private void updateChannelState(String channel, State st) { + updateState(new ChannelUID(thing.getUID(), channel), st); + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/utils/Utils.java b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/utils/Utils.java new file mode 100644 index 0000000000000..99e4cc6896725 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/utils/Utils.java @@ -0,0 +1,73 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.utils; + +import static org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants.UNKNOWN; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.core.util.StringUtils; + +/** + * {@link Utils} Utilities for binding + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +public class Utils { + public static final int EARTH_RADIUS = 6371; + + /** + * Calculate the Distance Using Equirectangular Distance Approximation + * + * @param lat1 - Latitude of coordinate 1 + * @param lon1 - Longitude of coordinate 1 + * @param lat2 - Latitude of coordinate 2 + * @param lon2 - Longitude of coordinate 2 + * @return distance in km + * + * @see https://www.baeldung.com/java-find-distance-between-points#equirectangular-distance-approximation + * + */ + public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) { + double lat1Rad = Math.toRadians(lat1); + double lat2Rad = Math.toRadians(lat2); + double lon1Rad = Math.toRadians(lon1); + double lon2Rad = Math.toRadians(lon2); + + double x = (lon2Rad - lon1Rad) * Math.cos((lat1Rad + lat2Rad) / 2); + double y = (lat2Rad - lat1Rad); + double distance = Math.sqrt(x * x + y * y) * EARTH_RADIUS; + + return distance; + } + + /** + * Converts String from "all upper case" into "title case" after space and hyphen + * + * @param input - string to convert + * @return title case string + */ + public static String toTitleCase(@Nullable String input) { + if (input == null) { + return toTitleCase(UNKNOWN); + } else { + StringBuffer titleCaseString = new StringBuffer(); + for (String string : StringUtils.splitByCharacterType(input)) { + String converted = StringUtils.capitalize(string.toLowerCase()); + titleCaseString.append(converted); + } + return titleCaseString.toString(); + } + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/addon/addon.xml new file mode 100644 index 0000000000000..ff23f71120dd8 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/addon/addon.xml @@ -0,0 +1,12 @@ + + + + binding + PegelOnline Binding + This is the binding for PegelOnline. + cloud + de + + diff --git a/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/i18n/pegelonline.properties b/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/i18n/pegelonline.properties new file mode 100644 index 0000000000000..3096ed186678f --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/i18n/pegelonline.properties @@ -0,0 +1,58 @@ +# add-on + +addon.pegelonline.name = PegelOnline Binding +addon.pegelonline.description = This is the binding for PegelOnline. + +# thing types + +thing-type.pegelonline.station.label = Measurement Station +thing-type.pegelonline.station.description = Station providing water level measurements + +# thing types config + +thing-type.config.pegelonline.station.hq10.label = Decade Flooding +thing-type.config.pegelonline.station.hq10.description = Water level of decade flooding 10-20 years +thing-type.config.pegelonline.station.hq100.label = Century Flooding +thing-type.config.pegelonline.station.hq100.description = Water level of century flooding in ~ 100 years +thing-type.config.pegelonline.station.hqExtreme.label = Extreme Flooding +thing-type.config.pegelonline.station.hqExtreme.description = Water level of extra ordinary flooding > 200 years +thing-type.config.pegelonline.station.refreshInterval.label = Refresh Interval +thing-type.config.pegelonline.station.refreshInterval.description = Interval measurement polling in minutes. +thing-type.config.pegelonline.station.uuid.label = Station Identifier +thing-type.config.pegelonline.station.uuid.description = Unique Station Identifier +thing-type.config.pegelonline.station.warningLevel1.label = Warning Level 1 +thing-type.config.pegelonline.station.warningLevel1.description = Water level triggering level 1 warning +thing-type.config.pegelonline.station.warningLevel2.label = Warning Level 2 +thing-type.config.pegelonline.station.warningLevel2.description = Water level triggering level 2 warning +thing-type.config.pegelonline.station.warningLevel3.label = Warning Level 3 +thing-type.config.pegelonline.station.warningLevel3.description = Water level triggering level 3 warning + +# channel types + +channel-type.pegelonline.level.label = Water Level +channel-type.pegelonline.timestamp.label = Last Measurement +channel-type.pegelonline.timestamp.state.pattern = %1$tA, %1$td.%1$tm. %1$tH:%1$tM +channel-type.pegelonline.trend.label = Water Level Trend +channel-type.pegelonline.trend.state.option.-1 = Lowering +channel-type.pegelonline.trend.state.option.0 = Steady +channel-type.pegelonline.trend.state.option.1 = Rising +channel-type.pegelonline.warning.label = Warning Level +channel-type.pegelonline.warning.state.option.0 = No warning +channel-type.pegelonline.warning.state.option.1 = Warning Level 1 +channel-type.pegelonline.warning.state.option.2 = Warning Level 2 +channel-type.pegelonline.warning.state.option.3 = Warning Level 3 +channel-type.pegelonline.warning.state.option.4 = Decade Flooding +channel-type.pegelonline.warning.state.option.5 = Century Flooding +channel-type.pegelonline.warning.state.option.6 = Extreme Flooding + +# channel types + +pegelonline.handler.status.uuid = Unique Identifier {0} not valid +pegelonline.handler.status.warning = Warnings shall be entered in increasing order +pegelonline.handler.status.flooding = Flooding Levels shall be entered in increasing order +pegelonline.handler.status.wait-feedback = Wait for first feedback +pegelonline.handler.status.uuid-not-found = No station found for uuid {0} +pegelonline.handler.status.uuid-verification = Verification for uuid {0} ongoing. Next try in 1 minute. +pegelonline.handler.status.http-status = HTTP status {0} received +pegelonline.handler.status.http-exception = Exception {0} +pegelonline.handler.status.json-error = Error parsing {0} diff --git a/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/thing/thing-types.xml new file mode 100644 index 0000000000000..f7e8cb3a92c45 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/thing/thing-types.xml @@ -0,0 +1,94 @@ + + + + + + Station providing water level measurements + + + + + + + + + uuid + + + + + Unique Station Identifier + + + + Water level triggering level 1 warning + + + + Water level triggering level 2 warning + + + + Water level triggering level 3 warning + + + + Water level of decade flooding 10-20 years + + + + Water level of century flooding in ~ 100 years + + + + Water level of extra ordinary flooding > 200 years + + + + 15 + Interval measurement polling in minutes. + + + + + + + DateTime + + + + + Number:Length + + + + + Number + + + + + + + + + + + Number + + + + + + + + + + + + + + diff --git a/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/CallbackMock.java b/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/CallbackMock.java new file mode 100644 index 0000000000000..8216e85341f6b --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/CallbackMock.java @@ -0,0 +1,156 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.handler; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.core.config.core.ConfigDescription; +import org.openhab.core.config.core.Configuration; +import org.openhab.core.thing.Bridge; +import org.openhab.core.thing.Channel; +import org.openhab.core.thing.ChannelGroupUID; +import org.openhab.core.thing.ChannelUID; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingStatusInfo; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.ThingUID; +import org.openhab.core.thing.binding.ThingHandlerCallback; +import org.openhab.core.thing.binding.builder.ChannelBuilder; +import org.openhab.core.thing.type.ChannelGroupTypeUID; +import org.openhab.core.thing.type.ChannelTypeUID; +import org.openhab.core.types.Command; +import org.openhab.core.types.State; +import org.openhab.core.types.TimeSeries; +import org.openhab.core.types.TimeSeries.Policy; +import org.openhab.core.types.UnDefType; + +/** + * The {@link CallbackMock} is a helper for unit tests to receive callbacks + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +public class CallbackMock implements ThingHandlerCallback { + private Map stateMap = new HashMap<>(); + private @Nullable ThingStatusInfo thingStatus; + + public @Nullable ThingStatusInfo getThingStatus() { + synchronized (this) { + while (thingStatus == null) { + try { + wait(); + } catch (InterruptedException e) { + } + } + } + return thingStatus; + } + + @Override + public void stateUpdated(ChannelUID channelUID, State state) { + stateMap.put(channelUID.getAsString(), state); + } + + public State getState(String channelUID) { + State val = stateMap.get(channelUID); + if (val == null) { + return UnDefType.UNDEF; + } else { + return val; + } + } + + @Override + public void postCommand(ChannelUID channelUID, Command command) { + } + + @Override + public void sendTimeSeries(ChannelUID channelUID, TimeSeries timeSeries) { + } + + public TimeSeries getTimeSeries(String cuid) { + return new TimeSeries(Policy.REPLACE); + } + + @Override + public void statusUpdated(Thing thing, ThingStatusInfo thingStatus) { + synchronized (this) { + this.thingStatus = thingStatus; + notifyAll(); + } + } + + @Override + public void thingUpdated(Thing thing) { + } + + @Override + public void validateConfigurationParameters(Thing thing, Map configurationParameters) { + } + + @Override + public void validateConfigurationParameters(Channel channel, Map configurationParameters) { + } + + @Override + public @Nullable ConfigDescription getConfigDescription(ChannelTypeUID channelTypeUID) { + return null; + } + + @Override + public @Nullable ConfigDescription getConfigDescription(ThingTypeUID thingTypeUID) { + return null; + } + + @Override + public void configurationUpdated(Thing thing) { + } + + @Override + public void migrateThingType(Thing thing, ThingTypeUID thingTypeUID, Configuration configuration) { + } + + @Override + public void channelTriggered(Thing thing, ChannelUID channelUID, String event) { + } + + @Override + public ChannelBuilder createChannelBuilder(ChannelUID channelUID, ChannelTypeUID channelTypeUID) { + return ChannelBuilder.create(channelUID); + } + + @Override + public ChannelBuilder editChannel(Thing thing, ChannelUID channelUID) { + return ChannelBuilder.create(channelUID); + } + + @Override + public List createChannelBuilders(ChannelGroupUID channelGroupUID, + ChannelGroupTypeUID channelGroupTypeUID) { + return List.of(); + } + + @Override + public boolean isChannelLinked(ChannelUID channelUID) { + return false; + } + + @Override + public @Nullable Bridge getBridge(ThingUID bridgeUID) { + return null; + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/PegelTest.java b/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/PegelTest.java new file mode 100644 index 0000000000000..7a007ff027a04 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/PegelTest.java @@ -0,0 +1,375 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.handler; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; +import static org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants.*; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.api.ContentResponse; +import org.junit.jupiter.api.Test; +import org.openhab.binding.pegelonline.internal.config.PegelOnlineConfiguration; +import org.openhab.binding.pegelonline.internal.dto.Measure; +import org.openhab.binding.pegelonline.internal.dto.Station; +import org.openhab.binding.pegelonline.internal.util.FileReader; +import org.openhab.binding.pegelonline.internal.utils.Utils; +import org.openhab.core.config.core.Configuration; +import org.openhab.core.library.types.DecimalType; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; +import org.openhab.core.thing.ThingStatusInfo; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.internal.ThingImpl; +import org.openhab.core.types.State; + +/** + * The {@link PegelTest} Test helper utils + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +class PegelTest { + public static final String TEST_STATION_UUID = "1ebd0f94-cc06-445c-8e73-43fe2b8c72dc"; + + @Test + void testConfigurationValidations() { + PegelOnlineConfiguration config = new PegelOnlineConfiguration(); + assertFalse(config.uuidCheck(), config.uuid); + config.uuid = "abc@"; + assertFalse(config.uuidCheck(), config.uuid); + config.uuid = "abc d"; + assertFalse(config.uuidCheck(), config.uuid); + config.uuid = "1234567a-abc1-efd9-cdf3-0123456789ab"; + assertTrue(config.uuidCheck(), config.uuid); + assertTrue(config.warningCheck(), "Warnings"); + + String content = FileReader.readFileInString("src/test/resources/stations.json"); + Station[] stationArray = GSON.fromJson(content, Station[].class); + assertNotNull(stationArray); + for (Station station : stationArray) { + config.uuid = station.uuid; + assertTrue(config.uuidCheck(), config.uuid); + } + } + + @Test + void testNameConversion() { + String stationName = "EIDER-SPERRWERK BP"; + String conversion = Utils.toTitleCase(stationName); + assertEquals("Eider-Sperrwerk Bp", conversion, "Station Name"); + + String content = FileReader.readFileInString("src/test/resources/stations.json"); + Station[] stationArray = GSON.fromJson(content, Station[].class); + assertNotNull(stationArray); + for (Station station : stationArray) { + assertTrue(Character.isUpperCase(Utils.toTitleCase(station.shortname).charAt(0)), + "First Character Upper Case"); + assertTrue(Character.isUpperCase(Utils.toTitleCase(station.water.shortname).charAt(0)), + "First Character Upper Case"); + } + } + + @Test + void testDistance() { + // Frankfurt Main: 50.117461111005, 8.639069127891485 + String content = FileReader.readFileInString("src/test/resources/stations.json"); + Station[] stationArray = GSON.fromJson(content, Station[].class); + assertNotNull(stationArray); + int hitCounter = 0; + for (Station station : stationArray) { + double distance = Utils.calculateDistance(50.117461111005, 8.639069127891485, station.latitude, + station.longitude); + if (distance < 50) { + hitCounter++; + assertTrue(station.water.shortname.equals("RHEIN") || station.water.shortname.equals("MAIN"), + "RHEIN or MAIN"); + } + } + assertEquals(11, hitCounter, "Meassurement Stations around FRA"); + } + + @Test + void testMeasureObject() { + String content = FileReader.readFileInString("src/test/resources/measure.json"); + Measure measure = GSON.fromJson(content, Measure.class); + if (measure != null) { + assertEquals("2021-08-01T16:00:00+02:00", measure.timestamp, "Timestamp"); + assertEquals(238, measure.value, "Level"); + assertEquals(-1, measure.trend, "Trend"); + } else { + fail(); + } + } + + @Test + void test404Status() { + String stationContent = FileReader.readFileInString("src/test/resources/stations.json"); + ContentResponse stationResponse = mock(ContentResponse.class); + when(stationResponse.getStatus()).thenReturn(200); + when(stationResponse.getContentAsString()).thenReturn(stationContent); + + String content = "{}"; + ContentResponse measureResponse = mock(ContentResponse.class); + when(measureResponse.getStatus()).thenReturn(404); + when(measureResponse.getContentAsString()).thenReturn(content); + + HttpClient httpClientMock = mock(HttpClient.class); + try { + when(httpClientMock.GET(STATIONS_URI + "/" + TEST_STATION_UUID + "/W/currentmeasurement.json")) + .thenReturn(measureResponse); + when(httpClientMock.GET(STATIONS_URI)).thenReturn(stationResponse); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + fail(); + } + + CallbackMock callback = new CallbackMock(); + ThingImpl ti = new ThingImpl(new ThingTypeUID("pegelonline:station"), "test"); + PegelOnlineHandler handler = new PegelOnlineHandler(ti, httpClientMock); + Configuration config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + handler.setCallback(callback); + handler.updateConfiguration(config); + handler.initialize(); + handler.performMeasurement(); + ThingStatusInfo tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.OFFLINE, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.CONFIGURATION_ERROR, tsi.getStatusDetail(), "Detail"); + String description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.uuid-not-found [\"" + TEST_STATION_UUID + "\"]", description, + "Description"); + } + + @Test + void testWrongContent() { + String stationContent = FileReader.readFileInString("src/test/resources/stations.json"); + ContentResponse stationResponse = mock(ContentResponse.class); + when(stationResponse.getStatus()).thenReturn(200); + when(stationResponse.getContentAsString()).thenReturn(stationContent); + + String content = "{}"; + ContentResponse measureResponse = mock(ContentResponse.class); + when(measureResponse.getStatus()).thenReturn(200); + when(measureResponse.getContentAsString()).thenReturn(content); + + HttpClient httpClientMock = mock(HttpClient.class); + try { + when(httpClientMock.GET(STATIONS_URI + "/" + TEST_STATION_UUID + "/W/currentmeasurement.json")) + .thenReturn(measureResponse); + when(httpClientMock.GET(STATIONS_URI)).thenReturn(stationResponse); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + fail(); + } + + CallbackMock callback = new CallbackMock(); + ThingImpl ti = new ThingImpl(new ThingTypeUID("pegelonline:station"), "test"); + PegelOnlineHandler handler = new PegelOnlineHandler(ti, httpClientMock); + Configuration config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + handler.setCallback(callback); + handler.updateConfiguration(config); + handler.initialize(); + handler.performMeasurement(); + ThingStatusInfo tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.OFFLINE, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.COMMUNICATION_ERROR, tsi.getStatusDetail(), "Detail"); + String description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.json-error [\"{}\"]", description, "Description"); + } + + @Test + public void testWrongConfiguration() { + CallbackMock callback = new CallbackMock(); + PegelOnlineHandler handler = getConfiguredHandler(callback, 99); + + Configuration config = new Configuration(); + config.put("uuid", " "); + handler.updateConfiguration(new Configuration(config)); + handler.initialize(); + + ThingStatusInfo tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.OFFLINE, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.CONFIGURATION_ERROR, tsi.getStatusDetail(), "Detail"); + String description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.uuid [\" \"]", description, "Description"); + } + + @Test + public void testInconsistentLevels() { + CallbackMock callback = new CallbackMock(); + PegelOnlineHandler handler = getConfiguredHandler(callback, 99); + + Configuration config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + config.put("warningLevel1", 100); + config.put("warningLevel2", 200); + config.put("warningLevel3", 150); + handler.updateConfiguration(config); + handler.initialize(); + + ThingStatusInfo tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.OFFLINE, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.CONFIGURATION_ERROR, tsi.getStatusDetail(), "Detail"); + String description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.warning", description, "Description"); + + handler.dispose(); + config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + config.put("warningLevel1", 100); + config.put("warningLevel2", 200); + config.put("warningLevel3", 300); + config.put("hqExtreme", 600); + handler.updateConfiguration(new Configuration(config)); + handler.initialize(); + + tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.UNKNOWN, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.NONE, tsi.getStatusDetail(), "Detail"); + description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.wait-feedback", description, "Description"); + + handler.dispose(); + config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + config.put("warningLevel1", 100); + config.put("warningLevel2", 200); + config.put("warningLevel3", 300); + config.put("hq10", 100); + config.put("hq100", 200); + config.put("hqExtreme", 150); + handler.updateConfiguration(new Configuration(config)); + handler.initialize(); + + tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.OFFLINE, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.CONFIGURATION_ERROR, tsi.getStatusDetail(), "Detail"); + description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.warning", description, "Description"); + } + + @Test + public void testWrongResponse() { + String measureContent = "{}"; + ContentResponse measureResponse = mock(ContentResponse.class); + when(measureResponse.getStatus()).thenReturn(500); + when(measureResponse.getContentAsString()).thenReturn(measureContent); + HttpClient httpClientMock = mock(HttpClient.class); + try { + when(httpClientMock.GET(STATIONS_URI + "/" + TEST_STATION_UUID + "/W/currentmeasurement.json")) + .thenReturn(measureResponse); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + fail(); + } + + CallbackMock callback = new CallbackMock(); + ThingImpl ti = new ThingImpl(new ThingTypeUID("pegelonline:station"), "test"); + PegelOnlineHandler handler = new PegelOnlineHandler(ti, httpClientMock); + Configuration config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + handler.setCallback(callback); + handler.updateConfiguration(config); + handler.initialize(); + handler.performMeasurement(); + ThingStatusInfo tsi = callback.getThingStatus(); + assertNotNull(tsi); + assertEquals(ThingStatus.OFFLINE, tsi.getStatus(), "Status"); + assertEquals(ThingStatusDetail.COMMUNICATION_ERROR, tsi.getStatusDetail(), "Detail"); + String description = tsi.getDescription(); + assertNotNull(description); + assertEquals("@text/pegelonline.handler.status.http-status [\"500\"]", description, "Description"); + } + + @Test + public void testWarnings() { + CallbackMock callback = new CallbackMock(); + PegelOnlineHandler handler = getConfiguredHandler(callback, 99); + handler.initialize(); + handler.performMeasurement(); + State state = callback.getState("pegelonline:station:test:warning"); + assertTrue(state instanceof DecimalType); + assertEquals(NO_WARNING, ((DecimalType) state).intValue(), "No warning"); + + handler = getConfiguredHandler(callback, 100); + handler.initialize(); + handler.performMeasurement(); + state = callback.getState("pegelonline:station:test:warning"); + assertTrue(state instanceof DecimalType); + assertEquals(WARN_LEVEL_1, ((DecimalType) state).intValue(), "Warn Level 1"); + + handler = getConfiguredHandler(callback, 299); + handler.initialize(); + handler.performMeasurement(); + state = callback.getState("pegelonline:station:test:warning"); + assertTrue(state instanceof DecimalType); + assertEquals(WARN_LEVEL_2, ((DecimalType) state).intValue(), "Warn Level 2"); + + handler = getConfiguredHandler(callback, 1000); + handler.initialize(); + handler.performMeasurement(); + state = callback.getState("pegelonline:station:test:warning"); + assertTrue(state instanceof DecimalType); + assertEquals(HQ_EXTREME, ((DecimalType) state).intValue(), "HQ extreme"); + } + + private PegelOnlineHandler getConfiguredHandler(CallbackMock callback, int levelSimulation) { + String stationContent = FileReader.readFileInString("src/test/resources/stations.json"); + ContentResponse stationResponse = mock(ContentResponse.class); + when(stationResponse.getStatus()).thenReturn(200); + when(stationResponse.getContentAsString()).thenReturn(stationContent); + + String measureContent = "{ \"timestamp\": \"2021-08-01T16:00:00+02:00\", \"value\": " + levelSimulation + + ", \"trend\": -1}"; + ContentResponse measureResponse = mock(ContentResponse.class); + when(measureResponse.getStatus()).thenReturn(200); + when(measureResponse.getContentAsString()).thenReturn(measureContent); + HttpClient httpClientMock = mock(HttpClient.class); + try { + when(httpClientMock.GET(STATIONS_URI + "/" + TEST_STATION_UUID + "/W/currentmeasurement.json")) + .thenReturn(measureResponse); + when(httpClientMock.GET(STATIONS_URI)).thenReturn(stationResponse); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + fail(); + } + + ThingImpl ti = new ThingImpl(new ThingTypeUID("pegelonline:station"), "test"); + PegelOnlineHandler handler = new PegelOnlineHandler(ti, httpClientMock); + Configuration config = new Configuration(); + config.put("uuid", TEST_STATION_UUID); + config.put("warningLevel1", 100); + config.put("warningLevel2", 200); + config.put("warningLevel3", 300); + config.put("hq10", 400); + config.put("hq100", 500); + config.put("hqExtreme", 600); + handler.setCallback(callback); + handler.updateConfiguration(config); + return handler; + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/util/FileReader.java b/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/util/FileReader.java new file mode 100644 index 0000000000000..7888d754f8d18 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/util/FileReader.java @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.pegelonline.internal.util; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.binding.pegelonline.internal.PegelOnlineBindingConstants; + +/** + * The {@link FileReader} Helper Util to read test resource files + * + * @author Bernd Weymann - Initial contribution + */ +@NonNullByDefault +public class FileReader { + + public static String readFileInString(String filename) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"));) { + StringBuilder buf = new StringBuilder(); + String sCurrentLine; + + while ((sCurrentLine = br.readLine()) != null) { + buf.append(sCurrentLine); + } + return buf.toString(); + } catch (IOException e) { + // fail if file cannot be read + assertTrue(false, e.getMessage()); + } + return PegelOnlineBindingConstants.UNKNOWN; + } +} diff --git a/bundles/org.openhab.binding.pegelonline/src/test/resources/measure.json b/bundles/org.openhab.binding.pegelonline/src/test/resources/measure.json new file mode 100644 index 0000000000000..cf2c821257305 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/test/resources/measure.json @@ -0,0 +1,7 @@ +{ + "timestamp": "2021-08-01T16:00:00+02:00", + "value": 238.0, + "trend": -1, + "stateMnwMhw": "normal", + "stateNswHsw": "unknown" +} \ No newline at end of file diff --git a/bundles/org.openhab.binding.pegelonline/src/test/resources/rivers.json b/bundles/org.openhab.binding.pegelonline/src/test/resources/rivers.json new file mode 100644 index 0000000000000..0f26a8f4d6726 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/test/resources/rivers.json @@ -0,0 +1,100 @@ +[ + { + "uuid": "4e7a6cfa-7548-4f7f-a97a-eb0694881003", + "number": "25830056", + "shortname": "Marburg", + "longname": "MARBURG", + "km": -38.7, + "agency": "REGIERUNGSPRÄSIDIUM GIESSEN ABTEILUNG STAATLICHES UMWELTAMT MARBURG", + "longitude": 8.764488839485487, + "latitude": 50.798715477809225, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "4b386a6a-996e-4a4a-a440-15d6b40226d4", + "number": "25800100", + "shortname": "GIESSEN KLÄRWERK", + "longname": "GIESSEN KLÄRWERK", + "km": -3.21, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.64860169166119, + "latitude": 50.575037651225514, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "32807065-b887-49f0-935a-80033e5f3cb0", + "number": "25800200", + "shortname": "LEUN NEU", + "longname": "LEUN NEU", + "km": 25.1, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.355230130810975, + "latitude": 50.545120232764674, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "89038b42-8181-48df-a0cd-2ca3913f2d68", + "number": "25800440", + "shortname": "LIMBURG SCHLEUSE UP", + "longname": "LIMBURG SCHLEUSE UP", + "km": 76.611, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.065188851061134, + "latitude": 50.39151276997554, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "eadedeb6-c31e-483f-b6c4-ca0153359ad7", + "number": "25800500", + "shortname": "DIEZ HAFEN", + "longname": "DIEZ HAFEN", + "km": 83.7, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.005066992072132, + "latitude": 50.3723880903084, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "64f735fd-88b6-42ea-9cdd-dc18d3806c34", + "number": "25800600", + "shortname": "KALKOFEN NEU", + "longname": "KALKOFEN NEU", + "km": 106.4, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.8898156192725235, + "latitude": 50.31783177830708, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "6b6b31e2-e5c7-4c85-8405-b8d0b6e158c4", + "number": "25800800", + "shortname": "LAHNSTEIN SCHLEUSE UP", + "longname": "LAHNSTEIN SCHLEUSE UP", + "km": 135.986, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.612956624441373, + "latitude": 50.30803174924558, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + } +] \ No newline at end of file diff --git a/bundles/org.openhab.binding.pegelonline/src/test/resources/stations.json b/bundles/org.openhab.binding.pegelonline/src/test/resources/stations.json new file mode 100644 index 0000000000000..f48c81a06005f --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/src/test/resources/stations.json @@ -0,0 +1,9381 @@ +[ + { + "uuid": "47174d8f-1b8e-4599-8a59-b580dd55bc87", + "number": "48900237", + "shortname": "EITZE", + "longname": "EITZE", + "km": 9.56, + "agency": "WSA VERDEN", + "longitude": 9.27676943537587, + "latitude": 52.90406541008721, + "water": { + "shortname": "ALLER", + "longname": "ALLER" + } + }, + { + "uuid": "5aaed954-de4e-4528-8f65-f3f530bc8325", + "number": "48900204", + "shortname": "RETHEM", + "longname": "RETHEM", + "km": 34.22, + "agency": "WSA VERDEN", + "longitude": 9.382840810129357, + "latitude": 52.78909755467678, + "water": { + "shortname": "ALLER", + "longname": "ALLER" + } + }, + { + "uuid": "522286e2-b2b3-4d0d-9a11-01b3ea418c76", + "number": "48900102", + "shortname": "AHLDEN", + "longname": "AHLDEN", + "km": 57.92, + "agency": "WSA VERDEN", + "longitude": 9.570880730005372, + "latitude": 52.76243123735362, + "water": { + "shortname": "ALLER", + "longname": "ALLER" + } + }, + { + "uuid": "8b4f9f7c-3376-4dd8-95c1-de55b1be4dfd", + "number": "48700103", + "shortname": "MARKLENDORF", + "longname": "MARKLENDORF", + "km": 75.91, + "agency": "WSA VERDEN", + "longitude": 9.703455757318089, + "latitude": 52.68275723511432, + "water": { + "shortname": "ALLER", + "longname": "ALLER" + } + }, + { + "uuid": "b475386c-30cc-453a-b3b7-1d17ace13595", + "number": "48300105", + "shortname": "CELLE", + "longname": "CELLE", + "km": 111.55, + "agency": "WSA VERDEN", + "longitude": 10.062164093638698, + "latitude": 52.62270549447987, + "water": { + "shortname": "ALLER", + "longname": "ALLER" + } + }, + { + "uuid": "ee52ce62-212c-4735-b438-26fbdc37e3e2", + "number": "586640", + "shortname": "BERLIN-PLOETZENSEE OP", + "longname": "BERLIN-PLOETZENSEE OP", + "km": 7.41, + "agency": "WSA BERLIN", + "longitude": 13.32314190907983, + "latitude": 52.54369958358309, + "water": { + "shortname": "BSK", + "longname": "BERLIN-SPANDAUER-SCHIFFFAHRTSKANAL" + } + }, + { + "uuid": "45721a68-566c-4e2a-a6c7-a7595982a779", + "number": "586650", + "shortname": "BERLIN-PLOETZENSEE UP", + "longname": "BERLIN-PLOETZENSEE UP", + "km": 7.5, + "agency": "WSA BERLIN", + "longitude": 13.323858970566246, + "latitude": 52.54303550696079, + "water": { + "shortname": "BSK", + "longname": "BERLIN-SPANDAUER-SCHIFFFAHRTSKANAL" + } + }, + { + "uuid": "aa9179c1-17ef-4c61-a48a-74193fa7bfdf", + "number": "906", + "shortname": "KONSTANZ", + "longname": "KONSTANZ", + "km": 0.0, + "agency": "REGIERUNGSPRÄSIDIUM FREIBURG", + "longitude": 9.181039087954112, + "latitude": 47.660750098681156, + "water": { + "shortname": "BODENSEE", + "longname": "BODENSEE" + } + }, + { + "uuid": "28ec91e8-90c0-44d1-8fd2-b0b64c00c43b", + "number": "126013", + "shortname": "ABBENFLETH SPERRWERK", + "longname": "ABBENFLETH SPERRWERK", + "km": 2.95, + "agency": "WSA HAMBURG", + "longitude": 9.494306874416917, + "latitude": 53.66896299867038, + "water": { + "shortname": "Bützflether Süderelbe", + "longname": "BÜTZFLETHER SÜDERELBE" + } + }, + { + "uuid": "6b595707-8c47-4bc7-a803-dbc327775c26", + "number": "586810", + "shortname": "BERLIN-SCHMOECKWITZ", + "longname": "BERLIN-SCHMOECKWITZ", + "km": 0.28, + "agency": "WSA BERLIN", + "longitude": 13.653581054978613, + "latitude": 52.3743981024444, + "water": { + "shortname": "DAW", + "longname": "DAHME-WASSERSTRASSE" + } + }, + { + "uuid": "c9a6c3bf-02d4-4945-83e8-b7c6cf9701fa", + "number": "586280", + "shortname": "NEUE MÜHLE SCHLEUSE UP", + "longname": "NEUE MÜHLE SCHLEUSE UP", + "km": 9.4, + "agency": "WSA BERLIN", + "longitude": 13.649641346289084, + "latitude": 52.2974746382713, + "water": { + "shortname": "DAW", + "longname": "DAHME-WASSERSTRASSE" + } + }, + { + "uuid": "0e0dbcc9-0a7d-494a-bc92-52e56a7fffe2", + "number": "586270", + "shortname": "NEUE MÜHLE SCHLEUSE OP", + "longname": "NEUE MÜHLE SCHLEUSE OP", + "km": 9.56, + "agency": "WSA BERLIN", + "longitude": 13.651757595446602, + "latitude": 52.296815768340494, + "water": { + "shortname": "DAW", + "longname": "DAHME-WASSERSTRASSE" + } + }, + { + "uuid": "facc5c16-f700-4248-9893-a395bffaf2e4", + "number": "27800090", + "shortname": "WALTROP", + "longname": "WALTROP", + "km": 2.144, + "agency": "WSA RHEINE", + "longitude": 7.380201417969081, + "latitude": 51.639741266643966, + "water": { + "shortname": "DHK", + "longname": "DATTELN-HAMM-KANAL" + } + }, + { + "uuid": "4ef9dd9c-b32b-43fc-bc5e-3849d4ab7ecc", + "number": "27800080", + "shortname": "HAMM UW", + "longname": "HAMM UW", + "km": 36.59, + "agency": "WSA RHEINE", + "longitude": 7.8157886355655055, + "latitude": 51.684812401946154, + "water": { + "shortname": "DHK", + "longname": "DATTELN-HAMM-KANAL" + } + }, + { + "uuid": "4dbce62d-a015-4011-afcd-423bb8d4b7a1", + "number": "27800060", + "shortname": "HAMM OW", + "longname": "HAMM OW", + "km": 38.72, + "agency": "WSA RHEINE", + "longitude": 7.842759417458165, + "latitude": 51.69378170588779, + "water": { + "shortname": "DHK", + "longname": "DATTELN-HAMM-KANAL" + } + }, + { + "uuid": "d31767ef-2cf8-4046-9881-d5651d81ade8", + "number": "27800050", + "shortname": "WERRIES OW", + "longname": "WERRIES OW", + "km": 40.611, + "agency": "WSA RHEINE", + "longitude": 7.870045686711512, + "latitude": 51.69515274731866, + "water": { + "shortname": "DHK", + "longname": "DATTELN-HAMM-KANAL" + } + }, + { + "uuid": "33092c28-201a-4210-89c9-ce68cad61ed1", + "number": "44100206", + "shortname": "HELMINGHAUSEN", + "longname": "HELMINGHAUSEN", + "km": 90.0, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 8.730780201102268, + "latitude": 51.3814751905412, + "water": { + "shortname": "DIEMEL", + "longname": "DIEMEL" + } + }, + { + "uuid": "5cdc6555-87d7-4fcd-834d-cbbe24c9d08b", + "number": "44100104", + "shortname": "DIEMELTALSPERRE", + "longname": "DIEMELTALSPERRE", + "km": 90.6, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 8.728647958229969, + "latitude": 51.37769518366961, + "water": { + "shortname": "DIEMEL", + "longname": "DIEMEL" + } + }, + { + "uuid": "7deedc21-2878-40cc-ab47-f6da0d9002f1", + "number": "44100024", + "shortname": "WILHELMSBRÜCKE", + "longname": "WILHELMSBRÜCKE", + "km": 97.4, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 8.723953002325766, + "latitude": 51.34631485945018, + "water": { + "shortname": "DIEMEL", + "longname": "DIEMEL" + } + }, + { + "uuid": "99619dc5-9c88-45e9-a97d-653c41cda8a1", + "number": "10096001", + "shortname": "ERLAU", + "longname": "ERLAU", + "km": 2214.51, + "agency": "WSA REGENSBURG", + "longitude": 13.586857356936074, + "latitude": 48.56736670179466, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "c389c9e2-a5d8-4104-a4cf-510ade44f143", + "number": "10094006", + "shortname": "ACHLEITEN", + "longname": "ACHLEITEN", + "km": 2223.05, + "agency": "VIA DONAU - ÖSTERREICHISCHE WASSERSTRASSEN-GESELLSCHAFT MBH", + "longitude": 13.503184735677362, + "latitude": 48.58204677038562, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "33ceb441-23bc-4ca6-9fcd-ac35d41ef117", + "number": "10092000", + "shortname": "PASSAU ILZSTADT", + "longname": "PASSAU ILZSTADT", + "km": 2225.25, + "agency": "WSA REGENSBURG", + "longitude": 13.478019136458602, + "latitude": 48.575208623171456, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "4520c1a8-174c-4b95-9ca3-fe1e3f9d874a", + "number": "10091013", + "shortname": "PASSAU LUITPOLDBRÜCKE DFH", + "longname": "PASSAU LUITPOLDBRÜCKE DFH", + "km": 2225.75, + "agency": "WSA REGENSBURG", + "longitude": 13.472832549818259, + "latitude": 48.57583526499114, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "9f12c405-35ac-4d90-9b7b-023be355867e", + "number": "10091008", + "shortname": "PASSAU DONAU", + "longname": "PASSAU DONAU", + "km": 2226.7, + "agency": "WSA REGENSBURG", + "longitude": 13.459076672254577, + "latitude": 48.57612011844346, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "3199ce09-cd9b-4be2-82bc-f03bb81438e5", + "number": "10090710", + "shortname": "PASSAU STEINBACHBRÜCKE DFH", + "longname": "PASSAU STEINBACHBRÜCKE DFH", + "km": 2230.31, + "agency": "WSA REGENSBURG", + "longitude": 13.475461520306283, + "latitude": 48.57566991908354, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "0fd56e0a-e32e-4b56-9cda-e0ce93d715c4", + "number": "10090708", + "shortname": "KACHLET UP", + "longname": "KACHLET UP", + "km": 2230.32, + "agency": "WSA REGENSBURG", + "longitude": 13.41078588341841, + "latitude": 48.57855473136858, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "560cf185-0052-4e40-832b-7792b52dd343", + "number": "10090408", + "shortname": "KACHLET WEHR UP", + "longname": "KACHLET WEHR UP", + "km": 2230.724, + "agency": "WSA REGENSBURG", + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "e6d68ab7-5c27-4f25-896f-11dbf04056cd", + "number": "10089006", + "shortname": "VILSHOFEN", + "longname": "VILSHOFEN", + "km": 2249.47, + "agency": "WSA REGENSBURG", + "longitude": 13.182358222269338, + "latitude": 48.637199594501034, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "616dd98e-816d-4e17-b8cd-57b163dbc8a2", + "number": "10088003", + "shortname": "HOFKIRCHEN", + "longname": "HOFKIRCHEN", + "km": 2256.86, + "agency": "WSA REGENSBURG", + "longitude": 13.115160271464772, + "latitude": 48.67663176781114, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "53d40547-8a09-4b25-988c-2e6d8d8d98ee", + "number": "10081004", + "shortname": "DEGGENDORF", + "longname": "DEGGENDORF", + "km": 2284.44, + "agency": "WSA REGENSBURG", + "longitude": 12.962349998942592, + "latitude": 48.824932569913784, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "7fe63a95-8ff6-4cff-9a29-a124136516b5", + "number": "10078000", + "shortname": "PFELLING", + "longname": "PFELLING", + "km": 2305.53, + "agency": "WSA REGENSBURG", + "longitude": 12.747330153374985, + "latitude": 48.87984985609091, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "f768173a-7a22-40f7-90a3-4676da7e5010", + "number": "10068006", + "shortname": "PFATTER", + "longname": "PFATTER", + "km": 2350.69, + "agency": "WSA REGENSBURG", + "longitude": 12.383769252011401, + "latitude": 48.98045247487973, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "7644f1d7-3198-4313-9340-abefd459a4f3", + "number": "10062000", + "shortname": "SCHWABELWEIS", + "longname": "SCHWABELWEIS", + "km": 2376.49, + "agency": "WSA REGENSBURG", + "longitude": 12.13868286367361, + "latitude": 49.02359432882008, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "eebd633a-3af0-4b79-83d5-b6490765e06c", + "number": "10061007", + "shortname": "EISERNE BRÜCKE", + "longname": "EISERNE BRÜCKE", + "km": 2379.27, + "agency": "WSA REGENSBURG", + "longitude": 12.101838366417141, + "latitude": 49.02137883980302, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "e476bcad-b898-4f68-9c26-4f1a1159dff6", + "number": "10056302", + "shortname": "OBERNDORF", + "longname": "OBERNDORF", + "km": 2397.38, + "agency": "WSA REGENSBURG", + "longitude": 12.014757615398487, + "latitude": 48.94685787976606, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "c9409937-b794-4b69-b36b-38467daab09a", + "number": "10054500", + "shortname": "KELHEIMWINZER", + "longname": "KELHEIMWINZER", + "km": 2409.7, + "agency": "WSA REGENSBURG", + "longitude": 11.932078963881246, + "latitude": 48.91185866862933, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "824a046b-9ca3-4db8-993d-e755122854e0", + "number": "10046105", + "shortname": "INGOLSTADT LUITPOLDSTRASSE", + "longname": "INGOLSTADT LUITPOLDSTRASSE", + "km": 2458.3, + "agency": "WASSERWIRTSCHAFTSAMT INGOLSTADT", + "longitude": 11.426054133096121, + "latitude": 48.75741413624857, + "water": { + "shortname": "DONAU", + "longname": "DONAU" + } + }, + { + "uuid": "70bee932-1c14-42f8-b4df-9a85589ca80e", + "number": "27700111", + "shortname": "HENRICHENBURG OW", + "longname": "HENRICHENBURG OW", + "km": 14.3, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.339002440622217, + "latitude": 51.61604683260784, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "e6b68bc2-6814-4bbf-b37e-44a0b7807c2d", + "number": "27700133", + "shortname": "HENRICHENBURG UW", + "longname": "HENRICHENBURG UW", + "km": 15.9, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.32942536471659, + "latitude": 51.62111782997715, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "f5bc4a51-004f-4e5e-99b9-e6ae888d57de", + "number": "27800020", + "shortname": "LÜDINGHAUSEN", + "longname": "LÜDINGHAUSEN", + "km": 39.32, + "agency": "WSA RHEINE", + "longitude": 7.401947345930443, + "latitude": 51.798112678551554, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "ccd3e8f1-39e9-4e09-aa41-625afda84460", + "number": "27800040", + "shortname": "MÜNSTER OW", + "longname": "MÜNSTER OW", + "km": 70.315, + "agency": "WSA RHEINE", + "longitude": 7.664374042081728, + "latitude": 51.96894192140413, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "ed260406-bdd6-42ef-bf2a-1246eea392f9", + "number": "27800030", + "shortname": "MÜNSTER UW", + "longname": "MÜNSTER UW", + "km": 72.49, + "agency": "WSA RHEINE", + "longitude": 7.660129217739214, + "latitude": 51.9871250324716, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "ade3a084-8680-47b5-9d2e-288cb6c5f9d5", + "number": "34000010", + "shortname": "BERGESHÖVEDE", + "longname": "BERGESHÖVEDE", + "km": 108.26, + "agency": "WSA RHEINE", + "longitude": 7.60495826627035, + "latitude": 52.27585261525862, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "04572010-1db2-4338-8562-b3dca5e715c5", + "number": "3690010", + "shortname": "HASEHUBBRÜCKE", + "longname": "HASEHUBBRÜCKE", + "km": 166.42, + "agency": "WSA MEPPEN", + "longitude": 7.292912281272764, + "latitude": 52.69419096026676, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "8177a148-5674-4b8f-8ded-050907f640f3", + "number": "3770030", + "shortname": "HERBRUM HAFENDAMM", + "longname": "HERBRUM HAFENDAMM", + "km": 213.07, + "agency": "WSA MEPPEN", + "longitude": 7.317135433826929, + "latitude": 53.04191531444477, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "16508b11-4349-48f7-be51-1227b7888585", + "number": "3770040", + "shortname": "RHEDE", + "longname": "RHEDE", + "km": 217.86, + "agency": "WSA MEPPEN", + "longitude": 7.286979017850521, + "latitude": 53.07241788394306, + "water": { + "shortname": "DEK", + "longname": "DORTMUND-EMS-KANAL" + } + }, + { + "uuid": "e1217d07-91f8-4019-b3a2-0c0d69316ab8", + "number": "2130154610", + "shortname": "GW-PWDRFP 02", + "longname": "GW-PWDRFP 02", + "km": 11.94, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.262888663124173, + "latitude": 53.9572369939967, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "4a4daad2-0e96-4070-914e-a1c4f6b7a3e5", + "number": "1130154610", + "shortname": "GW-PWDRFP 01", + "longname": "GW-PWDRFP 01", + "km": 12.03, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.260387081801174, + "latitude": 53.95940617253433, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "bc9f369e-5fd4-466c-8d97-ddb1ecd2aed2", + "number": "8130154610", + "shortname": "GW-PWDRFP 08", + "longname": "GW-PWDRFP 08", + "km": 12.45, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.265026101191742, + "latitude": 53.96211864218393, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "6cb287c2-2fb2-4845-b11f-e78bd5db2ce3", + "number": "3130154610", + "shortname": "GW-PWDRFP 03", + "longname": "GW-PWDRFP 03", + "km": 12.49, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.268645473763716, + "latitude": 53.96081287595425, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "18216ff8-18aa-4a71-bd32-e7479ccc439d", + "number": "9130154610", + "shortname": "GW-PWDRFP 09", + "longname": "GW-PWDRFP 09", + "km": 12.73, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.267517071045393, + "latitude": 53.96419551601779, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "6e19aeca-d37a-4b00-9354-c6dd90f12de2", + "number": "4130154610", + "shortname": "GW-PWDRFP 04", + "longname": "GW-PWDRFP 04", + "km": 13.0, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.276800135485715, + "latitude": 53.96278185572357, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "69fc0432-e9dc-400c-8c21-0c26e85df884", + "number": "6130154610", + "shortname": "GW-PWDRFP 06", + "longname": "GW-PWDRFP 06", + "km": 13.31, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.27218333697518, + "latitude": 53.968640829454415, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "a1341b43-9c62-4e71-87cc-61a0d4d1b105", + "number": "5130154610", + "shortname": "GW-PWDRFP 05", + "longname": "GW-PWDRFP 05", + "km": 13.41, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.275973783528286, + "latitude": 53.96794404784011, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "f6dc9514-bdaf-4817-b3bf-34cd4b5c3e18", + "number": "7130154610", + "shortname": "GW-PWDRFP 07", + "longname": "GW-PWDRFP 07", + "km": 13.86, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.275959434151838, + "latitude": 53.97311783991779, + "water": { + "shortname": "DYHRSSENMOOR", + "longname": "DYHRSSENMOOR" + } + }, + { + "uuid": "ab9d5a42-2b8d-491b-9fd1-8120df23c8e6", + "number": "42800502", + "shortname": "AFFOLDERN", + "longname": "AFFOLDERN", + "km": 44.02, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.084726303618204, + "latitude": 51.164140826669616, + "water": { + "shortname": "EDER", + "longname": "EDER" + } + }, + { + "uuid": "c6e9f744-4dbf-4e8e-a219-cab051ec610c", + "number": "42800310", + "shortname": "EDERTALSPERRE", + "longname": "EDERTALSPERRE", + "km": 49.2, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.058927535521473, + "latitude": 51.18404001559913, + "water": { + "shortname": "EDER", + "longname": "EDER" + } + }, + { + "uuid": "d2155fa6-b03d-468c-884e-ccf6fefc40bd", + "number": "42800309", + "shortname": "SCHMITTLOTHEIM", + "longname": "SCHMITTLOTHEIM", + "km": 74.5, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 8.899212377819229, + "latitude": 51.156952649485866, + "water": { + "shortname": "EDER", + "longname": "EDER" + } + }, + { + "uuid": "86c5688f-2fac-4d58-a245-ad8ce14cafbf", + "number": "9520020", + "shortname": "LEXFÄHRE OBERWASSER", + "longname": "LEXFÄHRE OBERWASSER", + "km": 26.09, + "agency": "WSA TÖNNING", + "longitude": 9.436143069928907, + "latitude": 54.222472083209574, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "7f01fbd8-653c-40ba-8ed0-57386a9b4557", + "number": "9520030", + "shortname": "LEXFÄHRE UNTERWASSER", + "longname": "LEXFÄHRE UNTERWASSER", + "km": 26.09, + "agency": "WSA TÖNNING", + "longitude": 9.43567567190707, + "latitude": 54.22321945463886, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "61394669-3f1b-44e5-ae37-50fd2512f4fa", + "number": "9520040", + "shortname": "NORDFELD OBERWASSER", + "longname": "NORDFELD OBERWASSER", + "km": 78.19, + "agency": "WSA TÖNNING", + "longitude": 9.139643467419782, + "latitude": 54.33873307277425, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "cb93548e-c1ce-43f6-b3a1-6903f8835b33", + "number": "9520050", + "shortname": "NORDFELD UNTERWASSER", + "longname": "NORDFELD UNTERWASSER", + "km": 78.312, + "agency": "WSA TÖNNING", + "longitude": 9.138246832675826, + "latitude": 54.339462378306536, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "721313e7-935a-4bb8-8c6d-0e014211b2ec", + "number": "9520060", + "shortname": "FRIEDRICHSTADT STRASSENBRÜCKE", + "longname": "FRIEDRICHSTADT STRASSENBRÜCKE", + "km": 83.14, + "agency": "WSA TÖNNING", + "longitude": 9.094603006864787, + "latitude": 54.36846849174286, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "00e386ac-e35c-4a6e-80dd-f8cd8a9e7a62", + "number": "9520070", + "shortname": "TÖNNING", + "longname": "TÖNNING", + "km": 99.8, + "agency": "WSA TÖNNING", + "longitude": 8.950149034965454, + "latitude": 54.31468296416213, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "8ac85e6c-6167-496c-b16f-fa94f81cd94a", + "number": "9520081", + "shortname": "EIDER-SPERRWERK BP", + "longname": "EIDER-SPERRWERK BP", + "km": 109.6, + "agency": "WSA TÖNNING", + "longitude": 8.849450815238436, + "latitude": 54.26585320877476, + "water": { + "shortname": "EIDER", + "longname": "EIDER" + } + }, + { + "uuid": "6da1a0e2-9af5-4a4c-b52d-c0faead67d70", + "number": "71161198", + "shortname": "HAHNÖFER NEBENELBE 1", + "longname": "HAHNÖFER NEBENELBE 1", + "agency": "WSA HAMBURG", + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "d634b809-286e-4c68-aa5b-49932bf34a97", + "number": "501421", + "shortname": "WITTENBERGGÜTE", + "longname": "WITTENBERGGÜTE", + "km": 1.0, + "agency": "BUNDESANSTALT FÜR GEWÄSSERKUNDE", + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "7cb7461b-3530-4c01-8978-7f676b8f71ed", + "number": "501010", + "shortname": "SCHÖNA", + "longname": "SCHÖNA", + "km": 2.05, + "agency": "WSA DRESDEN", + "longitude": 14.235228651495222, + "latitude": 50.87576228360562, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "85d686f1-55b2-4d36-8dba-3207b50901a7", + "number": "501040", + "shortname": "PIRNA", + "longname": "PIRNA", + "km": 34.67, + "agency": "WSA DRESDEN", + "longitude": 13.929755188361455, + "latitude": 50.96458457915114, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "70272185-b2b3-4178-96b8-43bea330dcae", + "number": "501060", + "shortname": "DRESDEN", + "longname": "DRESDEN", + "km": 55.63, + "agency": "WSA DRESDEN", + "longitude": 13.738831783620387, + "latitude": 51.05445972641962, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "24440872-5bd2-4fb3-8554-907b49816c49", + "number": "501080", + "shortname": "MEISSEN", + "longname": "MEISSEN", + "km": 82.2, + "agency": "WSA DRESDEN", + "longitude": 13.475467710324816, + "latitude": 51.16440553646387, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "b04b739d-7ffa-41ee-9eb9-95cb1b4ef508", + "number": "501110", + "shortname": "RIESA", + "longname": "RIESA", + "km": 108.4, + "agency": "WSA DRESDEN", + "longitude": 13.293340521685113, + "latitude": 51.31148155805161, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "16b9b4e7-be14-41fd-941e-6755c97276cc", + "number": "501160", + "shortname": "MÜHLBERG", + "longname": "MÜHLBERG", + "km": 128.02, + "agency": "WSA DRESDEN", + "longitude": 13.191761890400072, + "latitude": 51.43734955683441, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "83bbaedb-5d81-4bc6-9f66-3bd700c99c1f", + "number": "501261", + "shortname": "TORGAU", + "longname": "TORGAU", + "km": 154.15, + "agency": "WSA DRESDEN", + "longitude": 13.01013060185494, + "latitude": 51.553684503588414, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "f3dc8f07-c2bb-4b92-b0b0-4e01a395a2c6", + "number": "501330", + "shortname": "PRETZSCH-MAUKEN", + "longname": "PRETZSCH-MAUKEN", + "km": 184.45, + "agency": "WSA DRESDEN", + "longitude": 12.82329701429728, + "latitude": 51.71699260639268, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "c093b557-4954-4f05-8f5c-6c6d7916c62d", + "number": "501390", + "shortname": "ELSTER", + "longname": "ELSTER", + "km": 200.15, + "agency": "WSA DRESDEN", + "longitude": 12.827256703317092, + "latitude": 51.82685063279587, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "070b1eb4-3872-4e07-b2e5-e25fd9251b93", + "number": "501420", + "shortname": "WITTENBERG", + "longname": "WITTENBERG", + "km": 214.14, + "agency": "WSA DRESDEN", + "longitude": 12.646310954043884, + "latitude": 51.85652910647732, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "1ce53a59-33b9-40dc-9b17-3cd2a2414607", + "number": "501470", + "shortname": "COSWIG", + "longname": "COSWIG", + "km": 236.31, + "agency": "WSA DRESDEN", + "longitude": 12.454011602418165, + "latitude": 51.876940469957034, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "ae93f2a5-612e-4514-b5fd-9c8aecdd73c7", + "number": "501480", + "shortname": "VOCKERODE", + "longname": "VOCKERODE", + "km": 245.62, + "agency": "WSA DRESDEN", + "longitude": 12.355386908862238, + "latitude": 51.85133260782863, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "e97116a4-7d30-4671-8ba1-cdce0a153d1d", + "number": "501490", + "shortname": "ROSSLAU", + "longname": "ROSSLAU", + "km": 257.84, + "agency": "WSA DRESDEN", + "longitude": 12.236540981164824, + "latitude": 51.8814073366522, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "1edc5fa4-88af-47f5-95a4-0e77a06fe8b1", + "number": "502000", + "shortname": "DESSAU", + "longname": "DESSAU", + "km": 261.16, + "agency": "WSA DRESDEN", + "longitude": 12.223276831448223, + "latitude": 51.856888312230645, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "094b96e5-caeb-46d3-a8ee-d44182add069", + "number": "502010", + "shortname": "AKEN", + "longname": "AKEN", + "km": 274.75, + "agency": "WSA DRESDEN", + "longitude": 12.058859064366539, + "latitude": 51.857867421455005, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "939f82ec-15a9-49c8-8828-dc2f8a2d49e2", + "number": "502070", + "shortname": "BARBY", + "longname": "BARBY", + "km": 294.82, + "agency": "WSA MAGDEBURG", + "longitude": 11.882246426452301, + "latitude": 51.98483374360124, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "90bcb315-f080-41a8-a0ac-6122331bb4cf", + "number": "502130", + "shortname": "SCHÖNEBECK", + "longname": "SCHÖNEBECK", + "km": 311.76, + "agency": "WSA MAGDEBURG", + "longitude": 11.738801713181422, + "latitude": 52.02453372628083, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "b8567c1e-8610-4c2b-a240-65e8a74919fa", + "number": "502170", + "shortname": "MAGDEBURG-BUCKAU", + "longname": "MAGDEBURG-BUCKAU", + "km": 325.39, + "agency": "WSA MAGDEBURG", + "longitude": 11.634986074196531, + "latitude": 52.11927104944553, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "ccccb57f-a2f9-4183-ae88-5710d3afaefd", + "number": "502180", + "shortname": "MAGDEBURG-STROMBRÜCKE", + "longname": "MAGDEBURG-STROMBRÜCKE", + "km": 326.67, + "agency": "WSA MAGDEBURG", + "longitude": 11.644334378196518, + "latitude": 52.129697761951476, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "e30f2e83-b80b-4b96-8f39-fa60317afcc7", + "number": "502210", + "shortname": "ROTHENSEE", + "longname": "ROTHENSEE", + "km": 333.12, + "agency": "WSA MAGDEBURG", + "longitude": 11.682653289015432, + "latitude": 52.180952723286076, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "3adf88fd-fd7a-41d0-84f5-1143c98a6564", + "number": "502240", + "shortname": "NIEGRIPP AP", + "longname": "NIEGRIPP AP", + "km": 343.6, + "agency": "WSA MAGDEBURG", + "longitude": 11.73755447886122, + "latitude": 52.249748325832506, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "133f0f6c-2ca1-4798-9360-5b5f417dd839", + "number": "502250", + "shortname": "ROGÄTZ", + "longname": "ROGÄTZ", + "km": 350.64, + "agency": "WSA MAGDEBURG", + "longitude": 11.768833909111391, + "latitude": 52.313845363822594, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "13e91b77-90f3-41a5-a320-641748e9c311", + "number": "502350", + "shortname": "TANGERMÜNDE", + "longname": "TANGERMÜNDE", + "km": 388.26, + "agency": "WSA MAGDEBURG", + "longitude": 11.978056091329778, + "latitude": 52.54130608476928, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "de4cc1db-51cb-4b62-bee2-9750cbe4f5c4", + "number": "502370", + "shortname": "STORKAU", + "longname": "STORKAU", + "km": 396.11, + "agency": "WSA MAGDEBURG", + "longitude": 12.00248266741288, + "latitude": 52.61040476093329, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "f4c55f77-ab80-4e00-bed3-aa6631aba074", + "number": "502430", + "shortname": "SANDAU", + "longname": "SANDAU", + "km": 416.06, + "agency": "WSA MAGDEBURG", + "longitude": 12.031305110634692, + "latitude": 52.784769775069606, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "e32b0a28-8cd5-4053-bc86-fff9c6469106", + "number": "503030", + "shortname": "SCHARLEUK", + "longname": "SCHARLEUK", + "km": 447.22, + "agency": "WSA MAGDEBURG", + "longitude": 11.83755792821885, + "latitude": 52.95696918182865, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "cbf3cd49-91bd-49cc-8926-ccc6c0e7eca4", + "number": "503050", + "shortname": "WITTENBERGE", + "longname": "WITTENBERGE", + "km": 453.98, + "agency": "WSA MAGDEBURG", + "longitude": 11.75944299732184, + "latitude": 52.98552861101009, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "48f2661f-f9cb-4093-9d57-da2418ed656e", + "number": "503070", + "shortname": "MÜGGENDORF", + "longname": "MÜGGENDORF", + "km": 463.94, + "agency": "WSA MAGDEBURG", + "longitude": 11.65621263391411, + "latitude": 53.00790130889209, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "550e3885-a9d1-4e55-bd25-34228bd6d988", + "number": "5910010", + "shortname": "SCHNACKENBURG", + "longname": "SCHNACKENBURG", + "km": 474.56, + "agency": "WSA MAGDEBURG", + "longitude": 11.569161666053072, + "latitude": 53.03825049644637, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "c80a4f21-528c-4771-98d7-10cd591699a4", + "number": "503120", + "shortname": "LENZEN", + "longname": "LENZEN", + "km": 484.7, + "agency": "WSA MAGDEBURG", + "longitude": 11.455945648065999, + "latitude": 53.079992970560305, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "ac507f42-1593-49ea-865f-10b2523617c7", + "number": "5910020", + "shortname": "GORLEBEN", + "longname": "GORLEBEN", + "km": 492.95, + "agency": "WSA MAGDEBURG", + "longitude": 11.349502776620287, + "latitude": 53.05028175067159, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "6e3ea719-48b1-408a-bc55-0986c1e94cd5", + "number": "5910025", + "shortname": "DÖMITZ", + "longname": "DÖMITZ", + "km": 504.725, + "agency": "WSA LAUENBURG", + "longitude": 11.242932640396107, + "latitude": 53.1403563002025, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "c233674f-259a-4304-b81f-dce1f415d85b", + "number": "5910030", + "shortname": "DAMNATZ", + "longname": "DAMNATZ", + "km": 509.35, + "agency": "WSA LAUENBURG", + "longitude": 11.179440956310591, + "latitude": 53.13777045834148, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "a26e57c9-1cb8-4fca-ba80-9e02abc81df8", + "number": "5920010", + "shortname": "HITZACKER", + "longname": "HITZACKER", + "km": 522.915, + "agency": "WSA LAUENBURG", + "longitude": 11.045477219403653, + "latitude": 53.154627767415526, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "67d6e882-b60c-40d3-975c-a6d7a2b4e40a", + "number": "5930010", + "shortname": "NEU DARCHAU", + "longname": "NEU DARCHAU", + "km": 536.44, + "agency": "WSA LAUENBURG", + "longitude": 10.888809791040135, + "latitude": 53.23227495420561, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "6aa1cd8e-e528-4bcb-ba8e-705b6dcb7da2", + "number": "5930020", + "shortname": "BLECKEDE", + "longname": "BLECKEDE", + "km": 549.71, + "agency": "WSA LAUENBURG", + "longitude": 10.73532983500628, + "latitude": 53.29437629468059, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "33e0bce0-13df-4ffc-be9d-f1a79e795e1c", + "number": "5930033", + "shortname": "BOIZENBURG", + "longname": "BOIZENBURG", + "km": 559.46, + "agency": "WSA LAUENBURG", + "longitude": 10.717752844075033, + "latitude": 53.375466836951226, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "d9289367-c8aa-4b6a-b1ad-857fec94c6bb", + "number": "5930040", + "shortname": "HOHNSTORF", + "longname": "HOHNSTORF", + "km": 568.97, + "agency": "WSA LAUENBURG", + "longitude": 10.558824624251303, + "latitude": 53.36626795191103, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "b3492c68-8373-4769-9b29-22f66635a478", + "number": "5930050", + "shortname": "ARTLENBURG", + "longname": "ARTLENBURG", + "km": 573.8, + "agency": "WSA LAUENBURG", + "longitude": 10.48920565856956, + "latitude": 53.376168564842324, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "44f7e955-c97d-45c8-9ed7-19406806fb4c", + "number": "5930060", + "shortname": "GEESTHACHT", + "longname": "GEESTHACHT", + "km": 583.36, + "agency": "WSA LAUENBURG", + "longitude": 10.374502723680603, + "latitude": 53.42650078096063, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "0f7f58a8-411f-43d9-b42a-e897e63c4faa", + "number": "5930062", + "shortname": "WEHR GEESTHACHT UP", + "longname": "WEHR GEESTHACHT UP", + "km": 586.0, + "agency": "WSA LAUENBURG", + "longitude": 10.334765293678318, + "latitude": 53.42329357982252, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "2ee12b9a-f7fd-4856-82b9-6bdd850c2bba", + "number": "5930070", + "shortname": "ALTENGAMME", + "longname": "ALTENGAMME", + "km": 588.73, + "agency": "WSA LAUENBURG", + "longitude": 10.297376253613347, + "latitude": 53.431200926576814, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "3de8ea26-ab29-4e46-adad-06198ba2e0b7", + "number": "5930090", + "shortname": "ZOLLENSPIEKER", + "longname": "ZOLLENSPIEKER", + "km": 598.2, + "agency": "WSA LAUENBURG", + "longitude": 10.18539294274835, + "latitude": 53.39870390434762, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "b02ce5c0-64e9-4d24-90b9-269a28a1e9f9", + "number": "5950010", + "shortname": "OVER", + "longname": "OVER", + "km": 605.0, + "agency": "WSA LAUENBURG", + "longitude": 10.10108534214382, + "latitude": 53.42868635965855, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "ae1b91d0-e746-4f65-9f64-2d2e23603a82", + "number": "5952020", + "shortname": "BUNTHAUS", + "longname": "BUNTHAUS", + "km": 609.88, + "agency": "HAMBURG PORT AUTHORITY", + "longitude": 10.064007910377194, + "latitude": 53.461413851966704, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "706e5110-c5e2-4915-9989-c071fcb492ec", + "number": "5952025", + "shortname": "HAMBURG-HARBURG", + "longname": "HAMBURG-HARBURG", + "km": 615.0, + "agency": "HAMBURG PORT AUTHORITY", + "longitude": 9.991814826063603, + "latitude": 53.472725864524804, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "fed4c295-7a01-463c-998e-70ebad8cd2cc", + "number": "5952030", + "shortname": "SCHÖPFSTELLE", + "longname": "SCHÖPFSTELLE", + "km": 615.3, + "agency": "HAMBURG PORT AUTHORITY", + "longitude": 10.061584576548826, + "latitude": 53.50839277564603, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "d488c5cc-4de9-4631-8ce1-0db0e700b546", + "number": "5952050", + "shortname": "HAMBURG ST. PAULI", + "longname": "HAMBURG ST. PAULI", + "km": 623.1, + "agency": "HAMBURG PORT AUTHORITY", + "longitude": 9.969996726842329, + "latitude": 53.54568502657209, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "816affba-0118-4668-887f-fb882ed573b2", + "number": "5952060", + "shortname": "SEEMANNSHÖFT", + "longname": "SEEMANNSHÖFT", + "km": 628.9, + "agency": "HAMBURG PORT AUTHORITY", + "longitude": 9.879567409613173, + "latitude": 53.53956902594973, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "e6b42536-6bf8-42e3-8ef5-7d1a283a8608", + "number": "5950070", + "shortname": "CRANZ", + "longname": "CRANZ", + "km": 634.42, + "agency": "WSA HAMBURG", + "longitude": 9.791537018911868, + "latitude": 53.535943723982584, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "bacb459b-0f24-4233-bb35-cd224a51678e", + "number": "5952065", + "shortname": "BLANKENESE UF", + "longname": "BLANKENESE UF", + "km": 635.0, + "agency": "HAMBURG PORT AUTHORITY", + "longitude": 9.795825319280944, + "latitude": 53.55772718103615, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "f3c6ee73-5561-4068-96ec-364016e7d9ef", + "number": "5950090", + "shortname": "SCHULAU", + "longname": "SCHULAU", + "km": 641.0, + "agency": "WSA HAMBURG", + "longitude": 9.702887479041944, + "latitude": 53.567910528723715, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "81c95d3a-3193-4e9c-a411-adf97c751a43", + "number": "126017", + "shortname": "HAHNÖFER SAND WEST SIEL", + "longname": "HAHNÖFER SAND WEST SIEL", + "km": 641.5, + "agency": "WSA HAMBURG", + "longitude": 9.690490444910013, + "latitude": 53.54823793633717, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "1c80e441-a1d7-400c-b569-e038c9876a4f", + "number": "71160198", + "shortname": "D1 HANSKALBSAND OBERFLÄCHE", + "longname": "D1 HANSKALBSAND OBERFLÄCHE", + "km": 643.0, + "agency": "WSA HAMBURG", + "longitude": 9.672074804388942, + "latitude": 53.56571128392121, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "8d18d129-07f1-4c4d-adba-a985016be0b0", + "number": "5960010", + "shortname": "LÜHORT", + "longname": "LÜHORT", + "km": 645.5, + "agency": "WSA HAMBURG", + "longitude": 9.633361851581585, + "latitude": 53.57157451197346, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "599c23b1-4550-41e3-a7e7-3056989927f1", + "number": "5970010", + "shortname": "HETLINGEN", + "longname": "HETLINGEN", + "km": 650.5, + "agency": "WSA HAMBURG", + "longitude": 9.584318424577651, + "latitude": 53.60941130435129, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "6d43098c-632d-4e89-996f-98b1c99e5630", + "number": "126015", + "shortname": "TWIELENFLETH SIEL", + "longname": "TWIELENFLETH SIEL", + "km": 650.7, + "agency": "WSA HAMBURG", + "longitude": 9.567137091002857, + "latitude": 53.59875445021304, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "3988cd01-1c7c-4bd3-a8ce-d324f73f346d", + "number": "71160398", + "shortname": "D2 LÜHESAND OBERFLÄCHE", + "longname": "D2 LÜHESAND OBERFLÄCHE", + "km": 651.3, + "agency": "WSA HAMBURG", + "longitude": 9.569255731082905, + "latitude": 53.608025941016116, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "80f0fc4d-9fc7-449d-9d68-ee89333f0eff", + "number": "5970013", + "shortname": "STADERSAND", + "longname": "STADERSAND", + "km": 654.86, + "agency": "WSA HAMBURG", + "longitude": 9.52660227783838, + "latitude": 53.629729269859254, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "391bbba5-83d4-4791-b07e-65ab29b423f6", + "number": "5970019", + "shortname": "PINNAU-SPERRWERK AP", + "longname": "PINNAU-SPERRWERK AP", + "km": 658.444, + "agency": "WSA HAMBURG", + "longitude": 9.558227529245833, + "latitude": 53.67138892766762, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "ccf0645d-ddad-4c9e-b4f1-dc1f1edb2aa4", + "number": "5970020", + "shortname": "GRAUERORT", + "longname": "GRAUERORT", + "km": 660.6, + "agency": "WSA HAMBURG", + "longitude": 9.494906271967864, + "latitude": 53.67790728314029, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "7398029b-c6a1-484f-b1f6-1afe568ee1e2", + "number": "5970026", + "shortname": "GRAUERORT REEDE", + "longname": "GRAUERORT REEDE", + "km": 660.738, + "agency": "WSA HAMBURG", + "longitude": 9.494796126117517, + "latitude": 53.67914967442031, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "a653eb04-de2e-47f7-8e2c-09277cfe95ae", + "number": "5970024", + "shortname": "KRÜCKAU-SPERRWERK AP", + "longname": "KRÜCKAU-SPERRWERK AP", + "km": 663.3, + "agency": "WSA HAMBURG", + "longitude": 9.526336706347767, + "latitude": 53.71614057991539, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "3ed90357-4b01-4119-b1c5-bd2c62871e7b", + "number": "5970025", + "shortname": "KOLLMAR", + "longname": "KOLLMAR", + "km": 666.9, + "agency": "WSA HAMBURG", + "longitude": 9.459761691832878, + "latitude": 53.731123436561475, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "e651fe4a-d759-49c5-8e00-55137d0f2975", + "number": "5970030", + "shortname": "KRAUTSAND", + "longname": "KRAUTSAND", + "km": 671.75, + "agency": "WSA HAMBURG", + "longitude": 9.391553456044239, + "latitude": 53.75428442700496, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "8c20b4dc-1540-4b14-8c88-0e1d87de22c4", + "number": "5970031", + "shortname": "KRAUTSAND REEDE", + "longname": "KRAUTSAND REEDE", + "km": 671.787, + "agency": "WSA HAMBURG", + "longitude": 9.391186976193614, + "latitude": 53.7547049182697, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "1f1bbed7-c1fa-45b4-90d3-df94b50ad631", + "number": "5970035", + "shortname": "GLÜCKSTADT", + "longname": "GLÜCKSTADT", + "km": 674.0, + "agency": "WSA HAMBURG", + "longitude": 9.409429815364883, + "latitude": 53.78436111734677, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "c8ff06a7-eac9-4db7-ab22-46954d4481cb", + "number": "71160798", + "shortname": "D4 RHINPLATTE-NORD OBERFLÄCHE", + "longname": "D4 RHINPLATTE-NORD OBERFLÄCHE", + "km": 676.5, + "agency": "WSA HAMBURG", + "longitude": 9.3722470258039, + "latitude": 53.79658489924948, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "d9acdbec-61ff-4308-978a-2f4d1c2c4059", + "number": "5970041", + "shortname": "STÖR-SPERRWERK AP", + "longname": "STÖR-SPERRWERK AP", + "km": 678.636, + "agency": "WSA HAMBURG", + "longitude": 9.400981175517032, + "latitude": 53.82594572968708, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "610ab204-d3c4-4a11-a38b-e31461fdcf27", + "number": "5970050", + "shortname": "BROKDORF", + "longname": "BROKDORF", + "km": 684.2, + "agency": "WSA HAMBURG", + "longitude": 9.316029583340883, + "latitude": 53.86270347191609, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "f973fb71-4a44-4603-8b13-25002dd6dbd8", + "number": "126005", + "shortname": "SCHÖNEWORTH SIEL", + "longname": "SCHÖNEWORTH SIEL", + "km": 685.1, + "agency": "WSA HAMBURG", + "longitude": 9.28820059301234, + "latitude": 53.84689709635665, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "d4f5f719-8c52-4f8d-945d-1c31404cc628", + "number": "5970094", + "shortname": "BRUNSBÜTTEL MPM", + "longname": "BRUNSBÜTTEL MPM", + "km": 695.214, + "agency": "WSA CUXHAVEN", + "longitude": 9.148744899065209, + "latitude": 53.88780676587327, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "12847496-b0e9-4cb3-905c-b1b1c3c087db", + "number": "5970093", + "shortname": "BRUNSBÜTTEL MOLE 1", + "longname": "BRUNSBÜTTEL MOLE 1", + "km": 695.7, + "agency": "WSA CUXHAVEN", + "longitude": 9.144031265919063, + "latitude": 53.88881898280839, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "eb90bd3f-5405-412d-81e0-7a58be52dcef", + "number": "5970096", + "shortname": "OSTERIFF MPM", + "longname": "OSTERIFF MPM", + "km": 703.44, + "agency": "WSA CUXHAVEN", + "longitude": 9.031629023778263, + "latitude": 53.856368689225654, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "5140295e-b93e-4081-a920-642d89c7ca8b", + "number": "5990011", + "shortname": "OTTERNDORF MPM", + "longname": "OTTERNDORF MPM", + "km": 714.02, + "agency": "WSA CUXHAVEN", + "longitude": 8.870723820918473, + "latitude": 53.83537004729649, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "aad49293-242a-43ad-a8b1-e91d7792c4b2", + "number": "5990020", + "shortname": "CUXHAVEN STEUBENHÖFT", + "longname": "CUXHAVEN STEUBENHÖFT", + "km": 724.0, + "agency": "WSA CUXHAVEN", + "longitude": 8.717424884873582, + "latitude": 53.86768585758401, + "water": { + "shortname": "ELBE", + "longname": "ELBE" + } + }, + { + "uuid": "a7b1eda9-bed4-4456-8e54-529828cdcbf9", + "number": "587505", + "shortname": "DETERSHAGEN", + "longname": "DETERSHAGEN", + "km": 326.83, + "agency": "WSA BRANDENBURG", + "longitude": 11.762554814182451, + "latitude": 52.25137396176887, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "831ad501-d2fe-4782-ab83-4f1c8e0b15ff", + "number": "587507", + "shortname": "BURG", + "longname": "BURG", + "km": 332.54, + "agency": "WSA BRANDENBURG", + "longitude": 11.83202697629219, + "latitude": 52.27673747300618, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "64c37072-db97-4e08-8981-c67f0282de5c", + "number": "587510", + "shortname": "ZERBEN OP", + "longname": "ZERBEN OP", + "km": 345.25, + "agency": "WSA BRANDENBURG", + "longitude": 11.962203879639919, + "latitude": 52.34391063213988, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "532d8718-6ec7-4f12-bb2f-bde2dec50182", + "number": "587520", + "shortname": "ZERBEN UP", + "longname": "ZERBEN UP", + "km": 345.63, + "agency": "WSA BRANDENBURG", + "longitude": 11.964945434651396, + "latitude": 52.34689508881927, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "e9e7f20c-9f74-41fd-b054-cad59fca2cd4", + "number": "587535", + "shortname": "GENTHIN", + "longname": "GENTHIN", + "km": 361.444, + "agency": "WSA BRANDENBURG", + "longitude": 12.140021546748295, + "latitude": 52.41085678373606, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "e4f29379-6fd3-4501-afc5-bc5a41cb6e93", + "number": "587541", + "shortname": "KADE", + "longname": "KADE", + "km": 371.285, + "agency": "WSA BRANDENBURG", + "longitude": 12.279351110358602, + "latitude": 52.39704868721982, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "c6a12d34-c78f-44a2-a7ff-4b8d88f316cc", + "number": "587540", + "shortname": "WUSTERWITZ OP", + "longname": "WUSTERWITZ OP", + "km": 376.56, + "agency": "WSA BRANDENBURG", + "longitude": 12.356118651827487, + "latitude": 52.39427213147182, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "3bfcf759-27b3-4042-b59a-f6c8ed9e533e", + "number": "587550", + "shortname": "WUSTERWITZ UP", + "longname": "WUSTERWITZ UP", + "km": 376.965, + "agency": "WSA BRANDENBURG", + "longitude": 12.370473537607854, + "latitude": 52.39283506576701, + "water": { + "shortname": "EHK", + "longname": "ELBE-HAVEL-KANAL" + } + }, + { + "uuid": "6c5b6422-126d-4bf0-8856-7b86d74ea1b3", + "number": "90100100", + "shortname": "OSLOSS", + "longname": "OSLOSS", + "km": 9.72, + "agency": "WSA UELZEN", + "longitude": 10.667920057338705, + "latitude": 52.477670650488086, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "9cf795ce-8bdf-494b-b8c6-ef1bfb89c08b", + "number": "90100101", + "shortname": "WITTINGEN", + "longname": "WITTINGEN", + "km": 39.0, + "agency": "WSA UELZEN", + "longitude": 10.66447739629255, + "latitude": 52.727726793925115, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "728bd3e3-23f2-41c6-8ac5-4cfa223a5a7e", + "number": "90100111", + "shortname": "UELZEN OW", + "longname": "UELZEN OW", + "km": 60.38, + "agency": "WSA UELZEN", + "longitude": 10.614719701462517, + "latitude": 52.90933657890343, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "3eba7da6-fbd6-431c-91d3-522ec49275f0", + "number": "90100113", + "shortname": "UELZEN", + "longname": "UELZEN", + "km": 60.68, + "agency": "WSA UELZEN", + "longitude": 10.613515486381901, + "latitude": 52.91193193258229, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "0d0082cf-0b4b-4c8b-8e97-5d37b511916b", + "number": "90100110", + "shortname": "UELZEN UW", + "longname": "UELZEN UW", + "km": 60.98, + "agency": "WSA UELZEN", + "longitude": 10.61231113033207, + "latitude": 52.91452727407878, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "b8997708-53d0-4932-8fbf-265083e11517", + "number": "90100112", + "shortname": "BEVENSEN", + "longname": "BEVENSEN", + "km": 79.72, + "agency": "WSA UELZEN", + "longitude": 10.603346356554992, + "latitude": 53.07479652486107, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "c7364d1e-6139-4575-84cb-b420d21275c4", + "number": "90100121", + "shortname": "LUENEBURG OW", + "longname": "LUENEBURG OW", + "km": 103.97, + "agency": "WSA UELZEN", + "longitude": 10.485459016759826, + "latitude": 53.272487644066715, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "f348f2f6-37c2-41c2-8d53-fd06a18acce0", + "number": "90100123", + "shortname": "LUENEBURG", + "longname": "LUENEBURG", + "km": 105.14, + "agency": "WSA UELZEN", + "longitude": 10.486987882835402, + "latitude": 53.282959066596696, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "d18033cd-9cf6-4800-9176-57758bb444dc", + "number": "90100120", + "shortname": "LUENEBURG UW", + "longname": "LUENEBURG UW", + "km": 106.31, + "agency": "WSA UELZEN", + "longitude": 10.488563061269604, + "latitude": 53.293428170710264, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "7fec2f4f-6a2e-47ec-8f3c-016c581e4bbd", + "number": "90100122", + "shortname": "ARTLENBURG-ELK", + "longname": "ARTLENBURG-ELK", + "km": 114.74, + "agency": "WSA UELZEN", + "longitude": 10.501986716627133, + "latitude": 53.368564025269755, + "water": { + "shortname": "ESK", + "longname": "ELBESEITENKANAL" + } + }, + { + "uuid": "bf7bb8e8-e81f-4655-9e84-28738feae936", + "number": "9669040", + "shortname": "BUESSAU UP", + "longname": "BUESSAU UP", + "km": 3.37, + "agency": "WSA LAUENBURG", + "longitude": 10.625359636016615, + "latitude": 53.81755527881617, + "water": { + "shortname": "ELBE-LÜBECK-KANAL", + "longname": "ELK" + } + }, + { + "uuid": "45634232-36ac-416c-806d-5f64201dae2c", + "number": "9660049", + "shortname": "DONNERSCHLEUSE OP", + "longname": "DONNERSCHLEUSE OP", + "km": 20.598, + "agency": "WSA LAUENBURG", + "longitude": 10.636875854439548, + "latitude": 53.67203570705899, + "water": { + "shortname": "ELBE-LÜBECK-KANAL", + "longname": "ELK" + } + }, + { + "uuid": "46644438-83d6-4da8-a2a1-1deb2cb67561", + "number": "9660050", + "shortname": "MÖLLN", + "longname": "MÖLLN", + "km": 26.75, + "agency": "WSA LAUENBURG", + "longitude": 10.67482297794653, + "latitude": 53.624400353882585, + "water": { + "shortname": "ELBE-LÜBECK-KANAL", + "longname": "ELK" + } + }, + { + "uuid": "86f8dbab-6a64-408b-a5d5-69e69f01db2f", + "number": "3730001", + "shortname": "VERSEN WEHR OP", + "longname": "VERSEN WEHR OP", + "agency": "WSA MEPPEN", + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "ec4a598d-773d-44c1-935e-2053b54e45a3", + "number": "3790010", + "shortname": "PAPENBURG", + "longname": "PAPENBURG", + "km": 0.39, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.365594761853153, + "latitude": 53.10819077388404, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "aa6af4e6-a44f-46c4-abf6-449f8a68bab1", + "number": "3790020", + "shortname": "WEENER", + "longname": "WEENER", + "km": 6.852, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.371913437651044, + "latitude": 53.161187968385896, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "abb23dad-0880-41ab-8d2d-dd33e11f148f", + "number": "3910010", + "shortname": "LEERORT", + "longname": "LEERORT", + "km": 14.79, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.426190802733352, + "latitude": 53.21533512811442, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "244cae8b-ce75-4c2d-a66e-cb804f8335a2", + "number": "3910020", + "shortname": "TERBORG", + "longname": "TERBORG", + "km": 24.67, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.396102412436918, + "latitude": 53.29270395998908, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "5d1e4350-0f39-4428-84c3-6f8f0bbe80d4", + "number": "3950020", + "shortname": "POGUM", + "longname": "POGUM", + "km": 35.302, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.259801109021896, + "latitude": 53.32135061212295, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "edfdf747-be92-462f-87ed-53d228a33172", + "number": "3970010", + "shortname": "EMDEN NEUE SEESCHLEUSE", + "longname": "EMDEN NEUE SEESCHLEUSE", + "km": 40.45, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.186347889541317, + "latitude": 53.3367809193986, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "438b565e-f293-43c8-8771-377e555ed5ec", + "number": "3990010", + "shortname": "KNOCK", + "longname": "KNOCK", + "km": 50.848, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.03067362267113, + "latitude": 53.3271726846511, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "7753c1fa-34d8-4d09-a7c7-38024079117c", + "number": "3990020", + "shortname": "DUKEGAT", + "longname": "DUKEGAT", + "km": 65.69, + "agency": "WSA EMS-NORDSEE", + "longitude": 6.926206572590535, + "latitude": 53.43360175624244, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "c8af067c-ba6a-4a76-86d8-1ce8e532ef8b", + "number": "9340010", + "shortname": "EMSHÖRN", + "longname": "EMSHÖRN", + "km": 74.32, + "agency": "WSA EMS-NORDSEE", + "longitude": 6.8412044381103785, + "latitude": 53.493516863381444, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "3a8ed45f-28e7-4263-8437-d926c6a194f4", + "number": "3310010", + "shortname": "FUESTRUP", + "longname": "FUESTRUP", + "km": 102.177, + "agency": "WSA MEPPEN", + "longitude": 7.680240800859249, + "latitude": 52.04026675873374, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "50a449ba-af4c-42c7-b2c4-9a3eda37e1e3", + "number": "3390020", + "shortname": "RHEINE UNTERSCHLEUSE", + "longname": "RHEINE UNTERSCHLEUSE", + "km": 153.03, + "agency": "WSA MEPPEN", + "longitude": 7.4340780399463275, + "latitude": 52.28802625706214, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "200363fc-cdc5-4c22-a271-a25d1ba880ed", + "number": "3500015", + "shortname": "LINGEN-DARME", + "longname": "LINGEN-DARME", + "km": 196.2, + "agency": "WSA MEPPEN", + "longitude": 7.288341577719381, + "latitude": 52.49658867981537, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "ad357e52-0978-4583-91e6-bc03a222f655", + "number": "3550040", + "shortname": "DALUM", + "longname": "DALUM", + "km": 212.04, + "agency": "WSA MEPPEN", + "longitude": 7.2485301016630315, + "latitude": 52.59560286578248, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "6de43652-2db9-4627-a255-9cb1f8efb820", + "number": "3730010", + "shortname": "VERSEN WEHRDURCHSTICH", + "longname": "VERSEN WEHRDURCHSTICH", + "km": 234.78, + "agency": "WSA MEPPEN", + "longitude": 7.241939245128032, + "latitude": 52.73298291253683, + "water": { + "shortname": "EMS", + "longname": "EMS" + } + }, + { + "uuid": "8a08c920-c911-43e5-90dd-27d4d4e757d0", + "number": "5950080", + "shortname": "BUXTEHUDE", + "longname": "BUXTEHUDE", + "km": 0.71, + "agency": "WSA HAMBURG", + "longitude": 9.703368910151168, + "latitude": 53.48044959691865, + "water": { + "shortname": "ESTE", + "longname": "ESTE" + } + }, + { + "uuid": "5fea1a12-326f-4919-ac9a-02f9fa11ab57", + "number": "5950081", + "shortname": "ESTE INNERES SPERRWERK BP", + "longname": "ESTE INNERES SPERRWERK BP", + "km": 1.0, + "agency": "WSA HAMBURG", + "longitude": 9.776501861535763, + "latitude": 53.532826669663045, + "water": { + "shortname": "ESTE", + "longname": "ESTE" + } + }, + { + "uuid": "227b83f7-1302-4d7e-8d70-899036ff4ce2", + "number": "5950082", + "shortname": "ESTE INNERES SPERRWERK AP", + "longname": "ESTE INNERES SPERRWERK AP", + "km": 1.0, + "agency": "WSA HAMBURG", + "longitude": 9.77675237091593, + "latitude": 53.53302505387036, + "water": { + "shortname": "ESTE", + "longname": "ESTE" + } + }, + { + "uuid": "6629a4ca-4e2e-40b8-a66c-964d906c6911", + "number": "693010", + "shortname": "RUHLSDORF OP", + "longname": "RUHLSDORF OP", + "km": 59.2, + "agency": "WSA EBERSWALDE", + "longitude": 13.566246650747015, + "latitude": 52.839182627632134, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "f099ce74-1a3d-4d47-9810-75c2b1b178b6", + "number": "693030", + "shortname": "LEESENBRUECK OP", + "longname": "LEESENBRUECK OP", + "km": 61.1, + "agency": "WSA EBERSWALDE", + "longitude": 13.593943266745564, + "latitude": 52.837698594121505, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "547422fb-364e-4870-9977-c7782f0712e2", + "number": "693050", + "shortname": "GRAFENBRUECK OP", + "longname": "GRAFENBRUECK OP", + "km": 63.318, + "agency": "WSA EBERSWALDE", + "longitude": 13.625712942211283, + "latitude": 52.84204278735456, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "6386de1c-0426-4795-b23d-7ea2754ec782", + "number": "693070", + "shortname": "SCHOEPFURTH OP", + "longname": "SCHOEPFURTH OP", + "km": 67.5, + "agency": "WSA EBERSWALDE", + "longitude": 13.682534375603925, + "latitude": 52.84671301594642, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "3cd46cc7-b94d-424f-a860-c389dd9992a4", + "number": "693170", + "shortname": "EBERSWALDE OP", + "longname": "EBERSWALDE OP", + "km": 77.9, + "agency": "WSA EBERSWALDE", + "longitude": 13.820901248643345, + "latitude": 52.83582034251613, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "b6bbe4f8-aa59-414a-8292-2d3919590a20", + "number": "693190", + "shortname": "RAGOESE OP", + "longname": "RAGOESE OP", + "km": 81.0, + "agency": "WSA EBERSWALDE", + "longitude": 13.856280456933005, + "latitude": 52.84929577160606, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "516fbf8c-dc08-4808-b39b-1fa65a462180", + "number": "693210", + "shortname": "STECHER OP", + "longname": "STECHER OP", + "km": 84.4, + "agency": "WSA EBERSWALDE", + "longitude": 13.902174069639482, + "latitude": 52.84003259518914, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "6f81b35f-8339-4012-8029-ca193403e52c", + "number": "693230", + "shortname": "LIEPE OP", + "longname": "LIEPE OP", + "km": 88.9, + "agency": "WSA EBERSWALDE", + "longitude": 13.953351900793756, + "latitude": 52.84899598509975, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "79d783d3-e423-4c6d-b914-d7b7d161a89f", + "number": "693240", + "shortname": "LIEPE UP", + "longname": "LIEPE UP", + "km": 88.9, + "agency": "WSA EBERSWALDE", + "longitude": 13.95402333786989, + "latitude": 52.849469196281994, + "water": { + "shortname": "FiK", + "longname": "FINOWKANAL" + } + }, + { + "uuid": "d3e21e8a-99ce-4033-8db6-9d0f0648beb3", + "number": "126006", + "shortname": "FREIBURG SPERRWERK", + "longname": "FREIBURG SPERRWERK", + "km": 0.45, + "agency": "WSA HAMBURG", + "longitude": 9.295079440408715, + "latitude": 53.8269255247804, + "water": { + "shortname": "Freiburger Hafenpriel", + "longname": "FREIBURGER HAFENPRIEL" + } + }, + { + "uuid": "23721dfd-9b89-4b69-af80-063229917f27", + "number": "42900201", + "shortname": "BONAFORTH", + "longname": "BONAFORTH", + "km": 3.61, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.632042475708742, + "latitude": 51.40349164753268, + "water": { + "shortname": "FULDA", + "longname": "FULDA" + } + }, + { + "uuid": "213a585d-d665-4be7-96a4-78a992b9614d", + "number": "42900100", + "shortname": "GUNTERSHAUSEN", + "longname": "GUNTERSHAUSEN", + "km": 43.99, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.46933329275977, + "latitude": 51.22658020045521, + "water": { + "shortname": "FULDA", + "longname": "FULDA" + } + }, + { + "uuid": "acd63934-e40d-4650-a094-01cea45432be", + "number": "42700202", + "shortname": "GREBENAU", + "longname": "GREBENAU", + "km": 55.49, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.49819441574543, + "latitude": 51.193130668351344, + "water": { + "shortname": "FULDA", + "longname": "FULDA" + } + }, + { + "uuid": "d1ba62a4-767b-49ba-9ce8-ab17537b2fe1", + "number": "42700100", + "shortname": "ROTENBURG", + "longname": "ROTENBURG", + "km": 95.69, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.72044974360598, + "latitude": 51.00376747727409, + "water": { + "shortname": "FULDA", + "longname": "FULDA" + } + }, + { + "uuid": "f49855d8-371f-4bdf-8ade-ed6b475e6b27", + "number": "4940030", + "shortname": "RITTERHUDE", + "longname": "RITTERHUDE", + "km": 25.45, + "agency": "WSA BREMEN", + "longitude": 8.763345493242257, + "latitude": 53.18192796624425, + "water": { + "shortname": "HAMME", + "longname": "HAMME" + } + }, + { + "uuid": "2c68509c-bf1e-4866-9ec4-b26b231e5e04", + "number": "580310", + "shortname": "BERLIN-SPANDAU UP", + "longname": "BERLIN-SPANDAU UP", + "km": 0.55, + "agency": "WSA BERLIN", + "longitude": 13.209346222164326, + "latitude": 52.54006396763462, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "e607a4b6-85cc-4f12-a53d-116cb6eef4f5", + "number": "580300", + "shortname": "BERLIN-SPANDAU OP", + "longname": "BERLIN-SPANDAU OP", + "km": 0.76, + "agency": "WSA BERLIN", + "longitude": 13.209041700232952, + "latitude": 52.54185549253914, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "1b2e2996-c2ef-4d9c-9052-ced8cb7bc226", + "number": "581591", + "shortname": "BORGSDORF", + "longname": "BORGSDORF", + "km": 20.3, + "agency": "WSA EBERSWALDE", + "longitude": 13.251248157094599, + "latitude": 52.70048541451592, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "5bb1f56d-7c56-4b01-9da0-2a08a0aaedeb", + "number": "581590", + "shortname": "LEHNITZ UP", + "longname": "LEHNITZ UP", + "km": 28.43, + "agency": "WSA EBERSWALDE", + "longitude": 13.280309399537114, + "latitude": 52.767405265072625, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "c8a1cf0a-9441-47aa-8c64-64e8962a9bd4", + "number": "581580", + "shortname": "LEHNITZ OP", + "longname": "LEHNITZ OP", + "km": 28.746, + "agency": "WSA EBERSWALDE", + "longitude": 13.2804175617252, + "latitude": 52.767556872159204, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "414dd4ee-b38b-489f-a1fe-19b1d62f3202", + "number": "692080", + "shortname": "NIEDERFINOW SHW OP", + "longname": "NIEDERFINOW SHW OP", + "km": 77.428, + "agency": "WSA EBERSWALDE", + "longitude": 13.936478050751903, + "latitude": 52.85006819187145, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "4eec6b25-6b02-4448-b5db-10843c8d6175", + "number": "692090", + "shortname": "NIEDERFINOW SHW UP", + "longname": "NIEDERFINOW SHW UP", + "km": 77.972, + "agency": "WSA EBERSWALDE", + "longitude": 13.944325796325481, + "latitude": 52.849041883415836, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "3404a6e5-8dfe-42b1-90f6-c0c3741b6ac8", + "number": "603310", + "shortname": "HOHENSAATEN WEST BP", + "longname": "HOHENSAATEN WEST BP", + "km": 92.715, + "agency": "WSA EBERSWALDE", + "longitude": 14.149328038858735, + "latitude": 52.87425859247676, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "99309d3e-58d6-4200-b212-c8499467b4ce", + "number": "603400", + "shortname": "HOHENSAATEN WEST AP", + "longname": "HOHENSAATEN WEST AP", + "km": 93.035, + "agency": "WSA EBERSWALDE", + "longitude": 14.151790544688126, + "latitude": 52.87669350564356, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "4ee515f9-8cfb-4835-8460-8dde0b978fbe", + "number": "603410", + "shortname": "SCHWEDT SCHLEUSE BP", + "longname": "SCHWEDT SCHLEUSE BP", + "km": 123.476, + "agency": "WSA EBERSWALDE", + "longitude": 14.321854551570592, + "latitude": 53.068882655421824, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "314945d6-b499-40cf-bb21-d76cf4547e3a", + "number": "603420", + "shortname": "FRIEDRICHSTHAL", + "longname": "FRIEDRICHSTHAL", + "km": 133.712, + "agency": "WSA EBERSWALDE", + "longitude": 14.357228871006395, + "latitude": 53.155890588193245, + "water": { + "shortname": "HOW", + "longname": "HAVEL-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "d8ef9f21-479e-4504-8bf7-aef2dbe6184d", + "number": "587050", + "shortname": "SCHÖNWALDE OP", + "longname": "SCHÖNWALDE OP", + "km": 8.676, + "agency": "WSA BRANDENBURG", + "longitude": 13.08886441720241, + "latitude": 52.60786219342105, + "water": { + "shortname": "HvK", + "longname": "HAVELKANAL" + } + }, + { + "uuid": "b6650b13-582b-4d54-adac-991ac140e039", + "number": "587060", + "shortname": "SCHÖNWALDE UP", + "longname": "SCHÖNWALDE UP", + "km": 9.002, + "agency": "WSA BRANDENBURG", + "longitude": 13.084078146108572, + "latitude": 52.607726362162936, + "water": { + "shortname": "HvK", + "longname": "HAVELKANAL" + } + }, + { + "uuid": "1b51e55e-088a-44c3-a633-b1bee44422d7", + "number": "4960030", + "shortname": "OLDENBURG-DRIELAKE", + "longname": "OLDENBURG-DRIELAKE", + "km": 0.547, + "agency": "WSA BREMEN", + "longitude": 8.234080885188327, + "latitude": 53.14022907819447, + "water": { + "shortname": "HUNTE", + "longname": "HUNTE" + } + }, + { + "uuid": "c9df61c4-2a0b-47bd-8b51-fef7f430e528", + "number": "4960040", + "shortname": "REITHOERNE", + "longname": "REITHOERNE", + "km": 7.552, + "agency": "WSA BREMEN", + "longitude": 8.322516425323332, + "latitude": 53.16120722971422, + "water": { + "shortname": "HUNTE", + "longname": "HUNTE" + } + }, + { + "uuid": "2eacef2f-7a8f-413a-a2c7-f1da4cf22742", + "number": "4960050", + "shortname": "HOLLERSIEL", + "longname": "HOLLERSIEL", + "km": 11.535, + "agency": "WSA BREMEN", + "longitude": 8.378497094469848, + "latitude": 53.16814366204687, + "water": { + "shortname": "HUNTE", + "longname": "HUNTE" + } + }, + { + "uuid": "b3d88ca6-ea13-4540-a623-c02e43800a3b", + "number": "4960060", + "shortname": "BUTTELERHÖRNE", + "longname": "BUTTELERHÖRNE", + "km": 14.249, + "agency": "WSA BREMEN", + "longitude": 8.412609597352633, + "latitude": 53.179899152038196, + "water": { + "shortname": "HUNTE", + "longname": "HUNTE" + } + }, + { + "uuid": "2e1d458b-f78f-41dc-bebd-e0512578610a", + "number": "4960070", + "shortname": "HUNTEBRUECK", + "longname": "HUNTEBRUECK", + "km": 17.814, + "agency": "WSA BREMEN", + "longitude": 8.447392883379909, + "latitude": 53.20028313594166, + "water": { + "shortname": "HUNTE", + "longname": "HUNTE" + } + }, + { + "uuid": "531da758-b2f5-471d-9d9f-a78576081079", + "number": "4960080", + "shortname": "ELSFLETH OHRT", + "longname": "ELSFLETH OHRT", + "km": 21.493, + "agency": "WSA BREMEN", + "longitude": 8.459939466394742, + "latitude": 53.22122319633537, + "water": { + "shortname": "HUNTE", + "longname": "HUNTE" + } + }, + { + "uuid": "003200ab-d138-49d9-aa52-217817941f85", + "number": "166640", + "shortname": "ILMENAU", + "longname": "ILMENAU", + "km": 12.0, + "agency": "REGIONALSTELLE SUHL", + "longitude": 10.928789935384831, + "latitude": 50.680935109710866, + "water": { + "shortname": "ILM", + "longname": "ILM" + } + }, + { + "uuid": "d7a8df36-2978-45b8-99d1-76d84cf34c01", + "number": "5940020", + "shortname": "LÜNE", + "longname": "LÜNE", + "km": 1.48, + "agency": "WSA LAUENBURG", + "longitude": 10.41988826867243, + "latitude": 53.26103853118387, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "07830b68-c5b8-42dd-bf48-7176802130d0", + "number": "5940029", + "shortname": "BARDOWICK OP", + "longname": "BARDOWICK OP", + "km": 5.531, + "agency": "WSA LAUENBURG", + "longitude": 10.401332363749088, + "latitude": 53.29028356771887, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "a238b70f-1198-4b2f-8c03-41f3503e5389", + "number": "5940030", + "shortname": "BARDOWICK UP", + "longname": "BARDOWICK UP", + "km": 5.78, + "agency": "WSA LAUENBURG", + "longitude": 10.400999061267543, + "latitude": 53.292471122708534, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "eb3d4195-8c73-46b6-87e9-ef0de83edddf", + "number": "5940049", + "shortname": "WITTORF OP", + "longname": "WITTORF OP", + "km": 12.437, + "agency": "WSA LAUENBURG", + "longitude": 10.383452653753132, + "latitude": 53.341192043701525, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "308c39b6-475f-42c3-857f-7cf257426fa1", + "number": "5940050", + "shortname": "WITTORF UP", + "longname": "WITTORF UP", + "km": 12.44, + "agency": "WSA LAUENBURG", + "longitude": 10.383349979808017, + "latitude": 53.342657963988884, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "c33c3667-b8c5-484a-8ea0-b92933b5a9f0", + "number": "5940070", + "shortname": "FAHRENHOLZ OP", + "longname": "FAHRENHOLZ OP", + "km": 17.67, + "agency": "WSA LAUENBURG", + "longitude": 10.316369840651536, + "latitude": 53.360282772129885, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "bb62b28f-9947-42b1-92e4-743a1e0c4a76", + "number": "5940060", + "shortname": "FAHRENHOLZ UP", + "longname": "FAHRENHOLZ UP", + "km": 17.7, + "agency": "WSA LAUENBURG", + "longitude": 10.315484436390111, + "latitude": 53.36031051186378, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "6b05e8dc-3089-497a-a602-f40c4283d8bb", + "number": "5940080", + "shortname": "ILMENAU SPERRWERK AP", + "longname": "ILMENAU SPERRWERK AP", + "km": 28.5, + "agency": "WSA LAUENBURG", + "longitude": 10.178531367963828, + "latitude": 53.39387281905528, + "water": { + "shortname": "ILMENAU", + "longname": "ILMENAU" + } + }, + { + "uuid": "36243256-7786-4e69-922f-50785d8904bf", + "number": "44100013", + "shortname": "KOTTHAUSEN", + "longname": "KOTTHAUSEN", + "km": 3.4, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 8.68278565714364, + "latitude": 51.363558419498645, + "water": { + "shortname": "ITTER_DIEMEL", + "longname": "ITTER ZUR DIEMEL" + } + }, + { + "uuid": "855205e7-1cc9-4c5f-a2c2-7d5d84011708", + "number": "42800218", + "shortname": "HERZHAUSEN", + "longname": "HERZHAUSEN", + "km": 1.3, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 8.88881490002891, + "latitude": 51.19303245892172, + "water": { + "shortname": "ITTER EDER", + "longname": "ITTER ZUR EDER" + } + }, + { + "uuid": "f85bd17b-06c7-49bd-8bfc-ee2bf3ffea99", + "number": "9440020", + "shortname": "WHV ALTER VORHAFEN", + "longname": "WHV ALTER VORHAFEN", + "km": 1.565, + "agency": "WSA WILHELMSHAVEN", + "longitude": 8.145133955090275, + "latitude": 53.51449558364968, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "f77317d9-654f-4f51-925e-004c592049da", + "number": "9440030", + "shortname": "WHV NEUER VORHAFEN", + "longname": "WHV NEUER VORHAFEN", + "km": 4.053, + "agency": "WSA WILHELMSHAVEN", + "longitude": 8.16072874214752, + "latitude": 53.530306059467996, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "fac30fe9-a39c-445a-84de-637a199f1dfa", + "number": "9430020", + "shortname": "HOOKSIELPLATE", + "longname": "HOOKSIELPLATE", + "km": 18.098, + "agency": "WSA WILHELMSHAVEN", + "longitude": 8.148590233830715, + "latitude": 53.66916508339961, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "b1cda5a0-115f-4976-a0a6-9d427ff6dceb", + "number": "9430030", + "shortname": "SCHILLIG", + "longname": "SCHILLIG", + "km": 24.137, + "agency": "WSA WILHELMSHAVEN", + "longitude": 8.047073182615408, + "latitude": 53.6990043194127, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "c8b9a2b6-b783-417f-8479-3a0d732fb901", + "number": "9420010", + "shortname": "MELLUMPLATE", + "longname": "MELLUMPLATE", + "km": 31.13, + "agency": "WSA WILHELMSHAVEN", + "longitude": 8.092507447705561, + "latitude": 53.771713596769814, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "26656fda-cacf-4e92-9935-3ae6e717fe5b", + "number": "9420020", + "shortname": "WANGEROOGE OST", + "longname": "WANGEROOGE OST", + "km": 34.999, + "agency": "WSA WILHELMSHAVEN", + "longitude": 7.984916047278568, + "latitude": 53.767077715389604, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "c41d42b1-5b0d-47c9-ba53-d58d3d109b64", + "number": "9420030", + "shortname": "WANGEROOGE NORD", + "longname": "WANGEROOGE NORD", + "km": 41.049, + "agency": "WSA WILHELMSHAVEN", + "longitude": 7.929200210236435, + "latitude": 53.80629852774029, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "70039212-c8a8-43fc-82a5-150d95831772", + "number": "9420040", + "shortname": "WANGEROOGE WEST ", + "longname": "WANGEROOGE WEST ", + "km": 43.208, + "agency": "WSA WILHELMSHAVEN", + "longitude": 7.867938460727221, + "latitude": 53.776237907291524, + "water": { + "shortname": "JADE", + "longname": "JADE" + } + }, + { + "uuid": "da893bbd-965a-49b7-a661-707a1ba899d1", + "number": "9690084", + "shortname": "KARNIN", + "longname": "KARNIN", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.858494243912022, + "latitude": 53.8436648377186, + "water": { + "shortname": "KLEINES HAFF", + "longname": "KLEINES HAFF" + } + }, + { + "uuid": "c1588dcc-e314-4097-a54c-c0ffbe79209f", + "number": "9690088", + "shortname": "UECKERMÜNDE", + "longname": "UECKERMÜNDE", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 14.066477558939376, + "latitude": 53.75031035203513, + "water": { + "shortname": "KLEINES HAFF", + "longname": "KLEINES HAFF" + } + }, + { + "uuid": "136febf6-1371-4118-a9b8-4275444bda5d", + "number": "5970022", + "shortname": "ELMSHORN HAFEN", + "longname": "ELMSHORN HAFEN", + "km": 0.028, + "agency": "WSA HAMBURG", + "longitude": 9.653894435890026, + "latitude": 53.75218229281383, + "water": { + "shortname": "KRÜCKAU", + "longname": "KRÜCKAU" + } + }, + { + "uuid": "53c277c3-7ddb-4281-9937-97dcfe3753fa", + "number": "5970023", + "shortname": "KRÜCKAU-SPERRWERK BP", + "longname": "KRÜCKAU-SPERRWERK BP", + "km": 10.5, + "agency": "WSA HAMBURG", + "longitude": 9.526956004763068, + "latitude": 53.71625803363539, + "water": { + "shortname": "KRÜCKAU", + "longname": "KRÜCKAU" + } + }, + { + "uuid": "cf6ac249-f20a-400b-8543-31f2d2fe23f0", + "number": "4960020", + "shortname": "HUNDSMÜHLEN", + "longname": "HUNDSMÜHLEN", + "km": 5.188, + "agency": "WSA BREMEN", + "longitude": 8.173069994153126, + "latitude": 53.108846927349994, + "water": { + "shortname": "KÜSTENKANAL", + "longname": "KÜSTENKANAL" + } + }, + { + "uuid": "4e7a6cfa-7548-4f7f-a97a-eb0694881003", + "number": "25830056", + "shortname": "Marburg", + "longname": "MARBURG", + "km": -38.7, + "agency": "REGIERUNGSPRÄSIDIUM GIESSEN ABTEILUNG STAATLICHES UMWELTAMT MARBURG", + "longitude": 8.764488839485487, + "latitude": 50.798715477809225, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "4b386a6a-996e-4a4a-a440-15d6b40226d4", + "number": "25800100", + "shortname": "GIESSEN KLÄRWERK", + "longname": "GIESSEN KLÄRWERK", + "km": -3.21, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.64860169166119, + "latitude": 50.575037651225514, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "32807065-b887-49f0-935a-80033e5f3cb0", + "number": "25800200", + "shortname": "LEUN NEU", + "longname": "LEUN NEU", + "km": 25.1, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.355230130810975, + "latitude": 50.545120232764674, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "89038b42-8181-48df-a0cd-2ca3913f2d68", + "number": "25800440", + "shortname": "LIMBURG SCHLEUSE UP", + "longname": "LIMBURG SCHLEUSE UP", + "km": 76.611, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.065188851061134, + "latitude": 50.39151276997554, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "eadedeb6-c31e-483f-b6c4-ca0153359ad7", + "number": "25800500", + "shortname": "DIEZ HAFEN", + "longname": "DIEZ HAFEN", + "km": 83.7, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 8.005066992072132, + "latitude": 50.3723880903084, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "64f735fd-88b6-42ea-9cdd-dc18d3806c34", + "number": "25800600", + "shortname": "KALKOFEN NEU", + "longname": "KALKOFEN NEU", + "km": 106.4, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.8898156192725235, + "latitude": 50.31783177830708, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "6b6b31e2-e5c7-4c85-8405-b8d0b6e158c4", + "number": "25800800", + "shortname": "LAHNSTEIN SCHLEUSE UP", + "longname": "LAHNSTEIN SCHLEUSE UP", + "km": 135.986, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.612956624441373, + "latitude": 50.30803174924558, + "water": { + "shortname": "LAHN", + "longname": "LAHN" + } + }, + { + "uuid": "d198c901-fe4e-4c3f-9323-d6a771f51960", + "number": "586630", + "shortname": "BERLIN-UNTERSCHLEUSE UP", + "longname": "BERLIN-UNTERSCHLEUSE UP", + "km": 1.61, + "agency": "WSA BERLIN", + "longitude": 13.335037089237414, + "latitude": 52.5116077512151, + "water": { + "shortname": "LWK", + "longname": "LANDWEHRKANAL" + } + }, + { + "uuid": "503ad891-c9de-428c-b682-434510ed9de8", + "number": "586620", + "shortname": "BERLIN-UNTERSCHLEUSE OP", + "longname": "BERLIN-UNTERSCHLEUSE OP", + "km": 1.71, + "agency": "WSA BERLIN", + "longitude": 13.336518600769521, + "latitude": 52.5114022960738, + "water": { + "shortname": "LWK", + "longname": "LANDWEHRKANAL" + } + }, + { + "uuid": "c42ad3df-cfe3-4dca-9dcf-dbbaac569a2f", + "number": "586610", + "shortname": "BERLIN-OBERSCHLEUSE UP", + "longname": "BERLIN-OBERSCHLEUSE UP", + "km": 10.51, + "agency": "WSA BERLIN", + "longitude": 13.448832568216403, + "latitude": 52.497408279406315, + "water": { + "shortname": "LWK", + "longname": "LANDWEHRKANAL" + } + }, + { + "uuid": "24ce3282-39dd-4f2f-ba80-9676e59de7c7", + "number": "586600", + "shortname": "BERLIN-OBERSCHLEUSE OP", + "longname": "BERLIN-OBERSCHLEUSE OP", + "km": 10.62, + "agency": "WSA BERLIN", + "longitude": 13.449729991452958, + "latitude": 52.49827804052587, + "water": { + "shortname": "LWK", + "longname": "LANDWEHRKANAL" + } + }, + { + "uuid": "d4df3617-8209-4bcd-948e-fa723beb6666", + "number": "3880010", + "shortname": "DREYSCHLOOT", + "longname": "DREYSCHLOOT", + "km": 0.73, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.669140034394164, + "latitude": 53.17799359137072, + "water": { + "shortname": "LEDA", + "longname": "LEDA" + } + }, + { + "uuid": "5e6ae93a-7856-4005-bc77-fc6e4f5ad630", + "number": "3880050", + "shortname": "LEDASPERRWERK UP", + "longname": "LEDASPERRWERK UP", + "km": 21.125, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.473235725839977, + "latitude": 53.2135493368152, + "water": { + "shortname": "LEDA", + "longname": "LEDA" + } + }, + { + "uuid": "8e16bd66-c49b-406a-930e-4dccfb330ff5", + "number": "48800301", + "shortname": "SCHWARMSTEDT", + "longname": "SCHWARMSTEDT", + "km": 6.2, + "agency": "WSA VERDEN", + "longitude": 9.604020370697823, + "latitude": 52.683400781638795, + "water": { + "shortname": "LEINE", + "longname": "LEINE" + } + }, + { + "uuid": "dda39817-d01d-467f-a6a3-7487011a45d1", + "number": "48800200", + "shortname": "NEUSTADT", + "longname": "NEUSTADT", + "km": 45.74, + "agency": "WSA VERDEN", + "longitude": 9.466717295927152, + "latitude": 52.50959314116962, + "water": { + "shortname": "LEINE", + "longname": "LEINE" + } + }, + { + "uuid": "8134af78-3100-4679-bf1d-be82410df429", + "number": "48800108", + "shortname": "HERRENHAUSEN", + "longname": "HERRENHAUSEN", + "km": 87.07, + "agency": "WSA VERDEN", + "longitude": 9.676062044544127, + "latitude": 52.38806777456838, + "water": { + "shortname": "LEINE", + "longname": "LEINE" + } + }, + { + "uuid": "76844306-4c37-4a6f-aac4-9e518e96306f", + "number": "4930010", + "shortname": "WASSERHORST", + "longname": "WASSERHORST", + "km": 2.3, + "agency": "WSA BREMEN", + "longitude": 8.718207902429286, + "latitude": 53.162825441338896, + "water": { + "shortname": "LESUM", + "longname": "LESUM" + } + }, + { + "uuid": "9592d736-26af-46e5-84fd-e43e89b66566", + "number": "581120", + "shortname": "HIMMELPFORT UP", + "longname": "HIMMELPFORT UP", + "km": 0.249, + "agency": "WSA EBERSWALDE", + "longitude": 13.229973172984126, + "latitude": 53.17717833114318, + "water": { + "shortname": "LyG", + "longname": "LYCHENER GEWÄSSER" + } + }, + { + "uuid": "bcdfa310-d887-49bf-a562-1e439759044a", + "number": "581110", + "shortname": "HIMMELPFORT OP", + "longname": "HIMMELPFORT OP", + "km": 0.304, + "agency": "WSA EBERSWALDE", + "longitude": 13.230639317223481, + "latitude": 53.17745900577479, + "water": { + "shortname": "LyG", + "longname": "LYCHENER GEWÄSSER" + } + }, + { + "uuid": "3244d787-f884-40ae-9752-ad3507309edc", + "number": "5960020", + "shortname": "HORNEBURG", + "longname": "HORNEBURG", + "km": 0.25, + "agency": "WSA HAMBURG", + "longitude": 9.591134701843528, + "latitude": 53.51227375628912, + "water": { + "shortname": "LÜHE", + "longname": "LÜHE" + } + }, + { + "uuid": "259dcb4a-2366-45a6-a448-b06a8941ae16", + "number": "126016", + "shortname": "LÜHORT LFK", + "longname": "LÜHORT LFK", + "km": 12.6, + "agency": "WSA HAMBURG", + "longitude": 9.633671953854105, + "latitude": 53.5713750668064, + "water": { + "shortname": "LÜHE", + "longname": "LÜHE" + } + }, + { + "uuid": "db1684c1-7ffc-4e8a-b8cf-8240a0d03519", + "number": "24900108", + "shortname": "RAUNHEIM", + "longname": "RAUNHEIM", + "km": 12.213, + "agency": "WSA ASCHAFFENBURG", + "longitude": 8.448287072901215, + "latitude": 50.01615724952765, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "66ff3eb4-513b-478b-abd2-2f5126ea66fd", + "number": "24700404", + "shortname": "FRANKFURT OSTHAFEN", + "longname": "FRANKFURT OSTHAFEN", + "km": 37.591, + "agency": "WSA ASCHAFFENBURG", + "longitude": 8.714994541411016, + "latitude": 50.105736840936274, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "07374faf-2039-4430-ae6d-adc0e0784c4b", + "number": "24700347", + "shortname": "HANAU BRÜCKE DFH", + "longname": "HANAU BRÜCKE DFH", + "km": 56.398, + "agency": "WSA ASCHAFFENBURG", + "longitude": 8.917580195300888, + "latitude": 50.12018025508421, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "da453ad0-5f1d-417c-baa3-74ae297f0b7a", + "number": "24700346", + "shortname": "AUHEIM BRÜCKE DFH", + "longname": "AUHEIM BRÜCKE DFH", + "km": 59.56, + "agency": "WSA ASCHAFFENBURG", + "longitude": 8.936362926976006, + "latitude": 50.107039557807234, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "27eed51b-c0a4-417e-926b-bb4194bfb341", + "number": "24700335", + "shortname": "KROTZENBURG", + "longname": "KROTZENBURG", + "km": 63.23, + "agency": "WSA ASCHAFFENBURG", + "longitude": 8.953596258141465, + "latitude": 50.07971675184836, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "4627475d-ccda-4d53-8f13-28527c49eaf5", + "number": "24700325", + "shortname": "MAINFLINGEN", + "longname": "MAINFLINGEN", + "km": 76.43, + "agency": "WSA ASCHAFFENBURG", + "longitude": 9.033733207247224, + "latitude": 50.01536471997927, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "3ef81fc0-33dc-4f67-8bb8-3f66975292d5", + "number": "24700323", + "shortname": "KLEINOSTHEIM_WUK", + "longname": "KLEINOSTHEIM_WUK", + "km": 77.8, + "agency": "WSA ASCHAFFENBURG", + "longitude": 9.040708664679794, + "latitude": 50.00823806917759, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "3c7cfb10-c866-404b-b11c-0d79986f865a", + "number": "24700302", + "shortname": "OBERNAU", + "longname": "OBERNAU", + "km": 92.385, + "agency": "WSA ASCHAFFENBURG", + "longitude": 9.129075053362595, + "latitude": 49.933799962999025, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "355b02d2-c578-46d9-a56b-8046d470cb95", + "number": "24700200", + "shortname": "KLEINHEUBACH", + "longname": "KLEINHEUBACH", + "km": 121.741, + "agency": "WSA ASCHAFFENBURG", + "longitude": 9.233008925646716, + "latitude": 49.71362016104499, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "a919f57f-8378-42d8-82f8-b87eaf008641", + "number": "24700109", + "shortname": "FAULBACH", + "longname": "FAULBACH", + "km": 146.63, + "agency": "WSA ASCHAFFENBURG", + "longitude": 9.438827050517727, + "latitude": 49.78498542301384, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "0e065a22-9a0b-4f1d-b813-22fe6321bb1a", + "number": "24709089", + "shortname": "WERTHEIM", + "longname": "WERTHEIM", + "km": 156.96, + "agency": "WSA ASCHAFFENBURG", + "longitude": 9.518303910797995, + "latitude": 49.760944890765714, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "1ed983c3-114c-4fcc-a1db-61d336cf045f", + "number": "24500100", + "shortname": "STEINBACH", + "longname": "STEINBACH", + "km": 200.52, + "agency": "WSA SCHWEINFURT", + "longitude": 9.602081047495362, + "latitude": 50.011050343502575, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "915d76e1-3bf9-4e37-9a9a-4d144cd771cc", + "number": "24300600", + "shortname": "WÜRZBURG", + "longname": "WÜRZBURG", + "km": 251.97, + "agency": "WSA SCHWEINFURT", + "longitude": 9.925968763247354, + "latitude": 49.796208970188495, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "3de69bf8-dcbb-4afb-a15b-a8683a6a689c", + "number": "24300406", + "shortname": "ASTHEIM", + "longname": "ASTHEIM", + "km": 311.22, + "agency": "WSA SCHWEINFURT", + "longitude": 10.217655657401856, + "latitude": 49.8584094747879, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "42ecae60-eeb3-4b41-9721-46b3f12d04b8", + "number": "24300304", + "shortname": "SCHWEINFURT NEUER HAFEN", + "longname": "SCHWEINFURT NEUER HAFEN", + "km": 330.78, + "agency": "WSA SCHWEINFURT", + "longitude": 10.2218584351717, + "latitude": 50.03098323632883, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "a77aad00-caa0-44a2-95cb-8afd9c4ff00c", + "number": "24300202", + "shortname": "TRUNSTADT", + "longname": "TRUNSTADT", + "km": 378.44, + "agency": "WSA SCHWEINFURT", + "longitude": 10.755205231371262, + "latitude": 49.929695902681146, + "water": { + "shortname": "MAIN", + "longname": "MAIN" + } + }, + { + "uuid": "ff02f181-491c-4925-ad13-07edd2ddb3f1", + "number": "24300042", + "shortname": "BAMBERG", + "longname": "BAMBERG", + "km": 7.31, + "agency": "WSA NÜRNBERG", + "longitude": 10.906536913690166, + "latitude": 49.88205058255768, + "water": { + "shortname": "MDK", + "longname": "MAIN-DONAU-KANAL" + } + }, + { + "uuid": "4a69e82e-97a3-4573-8aeb-b695c1eaa0b1", + "number": "13409200", + "shortname": "RIEDENBURG_UP", + "longname": "RIEDENBURG_UP", + "km": 151.2, + "agency": "WSA NÜRNBERG", + "longitude": 11.685169669607676, + "latitude": 48.973380279184966, + "water": { + "shortname": "MDK", + "longname": "MAIN-DONAU-KANAL" + } + }, + { + "uuid": "a1cf60be-8149-445d-a7a6-e7c7e7051944", + "number": "581550", + "shortname": "LIEBENWALDE UP", + "longname": "LIEBENWALDE UP", + "km": 43.261, + "agency": "WSA EBERSWALDE", + "longitude": 13.396056310875569, + "latitude": 52.850305729880425, + "water": { + "shortname": "MZK", + "longname": "MALZER KANAL" + } + }, + { + "uuid": "3f8ceb6d-e95d-46e6-b523-3d15fe706049", + "number": "581540", + "shortname": "LIEBENWALDE OP", + "longname": "LIEBENWALDE OP", + "km": 45.334, + "agency": "WSA EBERSWALDE", + "longitude": 13.396077065717305, + "latitude": 52.85095253062228, + "water": { + "shortname": "MZK", + "longname": "MALZER KANAL" + } + }, + { + "uuid": "6c7c180f-6dc1-4c4d-97bd-814080df8bcf", + "number": "31010010", + "shortname": "HOERSTEL", + "longname": "HOERSTEL", + "km": 0.637, + "agency": "WSA MINDEN", + "longitude": 7.605447065657079, + "latitude": 52.28313187138471, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "7af19499-8bc8-4a91-964d-88618ea8998a", + "number": "31010011", + "shortname": "RECKE", + "longname": "RECKE", + "km": 12.595, + "agency": "WSA MINDEN", + "longitude": 7.70627373472818, + "latitude": 52.354327818803434, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "bec8a6a5-c3de-4322-856a-870ceb992fe4", + "number": "31010020", + "shortname": "BRAMSCHE", + "longname": "BRAMSCHE", + "km": 31.95, + "agency": "WSA MINDEN", + "longitude": 7.978172733704688, + "latitude": 52.39616711650504, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "1125a391-6586-4951-865f-3a2c72f2c81a", + "number": "31010032", + "shortname": "BROXTEN", + "longname": "BROXTEN", + "km": 47.43, + "agency": "WSA MINDEN", + "longitude": 8.190182787252548, + "latitude": 52.39066742566611, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "6760b547-a7e7-408a-b3aa-529fe376bfcd", + "number": "31010030", + "shortname": "BAD ESSEN", + "longname": "BAD ESSEN", + "km": 60.8, + "agency": "WSA MINDEN", + "longitude": 8.342519632727996, + "latitude": 52.32454057046036, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "c2aa9164-1073-4271-82ef-44344fbe456e", + "number": "31010031", + "shortname": "LUEBBECKE", + "longname": "LUEBBECKE", + "km": 80.092, + "agency": "WSA MINDEN", + "longitude": 8.617140963904099, + "latitude": 52.334960638513955, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "ac970eb0-f5cf-4db0-90f0-e281f5d4775c", + "number": "31010041", + "shortname": "HAHLEN", + "longname": "HAHLEN", + "km": 98.09, + "agency": "WSA MINDEN", + "longitude": 8.868900742195017, + "latitude": 52.2973109844654, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "6d3a3e2a-713c-4232-9b70-834a2c0e9705", + "number": "3101004", + "shortname": "MINDEN", + "longname": "MINDEN", + "km": 102.132, + "agency": "WSA MINDEN", + "longitude": 8.926898351900594, + "latitude": 52.303075757687004, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "8bccd43b-ed6f-4ed8-ae6e-80ad7e330658", + "number": "31010045", + "shortname": "WESER", + "longname": "WESER", + "km": 102.5, + "agency": "WSA MINDEN", + "longitude": 8.932229359197, + "latitude": 52.3036058995563, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "d2c8f60e-fda4-4744-9017-9c727fdcfe1f", + "number": "31010042", + "shortname": "BERENBUSCH", + "longname": "BERENBUSCH", + "km": 106.732, + "agency": "WSA MINDEN", + "longitude": 8.990630381569474, + "latitude": 52.29494842924103, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "2f1080ba-97a2-40b3-af4e-3ac3d53d27de", + "number": "31010040", + "shortname": "WARBER GRABEN", + "longname": "WARBER GRABEN", + "km": 111.75, + "agency": "WSA MINDEN", + "longitude": 9.053354087265255, + "latitude": 52.3111172305382, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "c1f06401-9488-4a27-b932-59cce52c5819", + "number": "31010043", + "shortname": "RUSBEND", + "longname": "RUSBEND", + "km": 112.16, + "agency": "WSA MINDEN", + "longitude": 9.058269750285689, + "latitude": 52.31324459320368, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "864a8111-d0c1-4b74-b94e-515f0869355e", + "number": "31010044", + "shortname": "NIENBRUEGGE", + "longname": "NIENBRUEGGE", + "km": 126.653, + "agency": "WSA MINDEN", + "longitude": 9.228531529696014, + "latitude": 52.37919574366444, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "eb24b5a3-5102-429b-93a9-15656fee850f", + "number": "31010052", + "shortname": "RODENBERGER AUE-WEST", + "longname": "RODENBERGER AUE-WEST", + "km": 132.68, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.315912784359138, + "latitude": 52.38758640700614, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "6288de60-38be-4291-9ff6-dcf6c0f58cea", + "number": "31010051", + "shortname": "RODENBERGER AUE-OST", + "longname": "RODENBERGER AUE-OST", + "km": 133.55, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.328651380645706, + "latitude": 52.38820297196957, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "516c4814-d70b-47bf-99bf-a76844b94e5e", + "number": "31010050", + "shortname": "LOHNDE", + "longname": "LOHNDE", + "km": 150.1, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.56415099470703, + "latitude": 52.399312263449794, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "27dfd137-3b88-42e8-9baf-6bee76e0717c", + "number": "31010062", + "shortname": "HANN. LIST", + "longname": "HANN. LIST", + "km": 163.56, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.74576556778922, + "latitude": 52.40596232644757, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "dd41a7d6-9b11-4ec4-9518-388266750cfa", + "number": "31010060", + "shortname": "ANDERTEN UW", + "longname": "ANDERTEN UW", + "km": 173.425, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.858777009971709, + "latitude": 52.3667148809812, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "98daae03-5aaa-4284-9717-7d52da4fe063", + "number": "31010063", + "shortname": "ANDERTEN", + "longname": "ANDERTEN", + "km": 174.5, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.866583192357151, + "latitude": 52.35832999049542, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "bc20d819-1782-4588-885d-129f21a27cf9", + "number": "31010061", + "shortname": "ANDERTEN OW", + "longname": "ANDERTEN OW", + "km": 174.96, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.869744389448229, + "latitude": 52.35467740765629, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "ab0d9117-83f3-412d-bce5-b3e698246c0b", + "number": "31010070", + "shortname": "SEHNDE", + "longname": "SEHNDE", + "km": 183.58, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 9.962091467569225, + "latitude": 52.30604876905137, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "be05603a-83e4-48d4-90d9-e074b7d34dcd", + "number": "31010071", + "shortname": "MEHRUM", + "longname": "MEHRUM", + "km": 192.556, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 10.093323740574123, + "latitude": 52.31074646602995, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "42b865fb-5dd8-4204-a7aa-260704d69e21", + "number": "31010080", + "shortname": "THUNE", + "longname": "THUNE", + "km": 222.85, + "agency": "WSA BRAUNSCHWEIG", + "longitude": 10.51713424608098, + "latitude": 52.33523660910899, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "a8604e8f-9330-4431-8cf6-0a68fc793c82", + "number": "31010092", + "shortname": "SUELFELD OW", + "longname": "SUELFELD OW", + "km": 235.7, + "agency": "WSA UELZEN", + "longitude": 10.647378490339182, + "latitude": 52.416830457290295, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "9dfb4b0b-daa6-4a90-9a82-60734d3d2f04", + "number": "31010094", + "shortname": "SUELFELD", + "longname": "SUELFELD", + "km": 236.8, + "agency": "WSA UELZEN", + "longitude": 10.661979362056854, + "latitude": 52.421070769420005, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "892183d6-3a28-4347-afb4-bc89602ca927", + "number": "31010091", + "shortname": "SUELFELD UW", + "longname": "SUELFELD UW", + "km": 238.0, + "agency": "WSA UELZEN", + "longitude": 10.678298136429536, + "latitude": 52.425073065756166, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "dbb2bb9f-0f80-4df4-9d5c-98af2ee41826", + "number": "31010090", + "shortname": "VORSFELDE", + "longname": "VORSFELDE", + "km": 249.12, + "agency": "WSA UELZEN", + "longitude": 10.840641047318789, + "latitude": 52.432888180238834, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "4ed5f6da-b7a0-4431-ab1f-1a26e69a21bc", + "number": "31010093", + "shortname": "RUEHEN", + "longname": "RUEHEN", + "km": 256.13, + "agency": "WSA UELZEN", + "longitude": 10.909579440422446, + "latitude": 52.478820809218284, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "36f80081-9353-4ab1-8e61-07a5509f1cea", + "number": "3101012", + "shortname": "VELSDORF", + "longname": "VELSDORF", + "km": 283.1, + "agency": "WSA MAGDEBURG", + "longitude": 11.27265033711792, + "latitude": 52.40916386843749, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "90d92801-c13c-4b1a-8885-83d1a07d6db8", + "number": "3101013", + "shortname": "HALDENSLEBEN", + "longname": "HALDENSLEBEN", + "km": 300.9, + "agency": "WSA UELZEN", + "longitude": 11.408771857381966, + "latitude": 52.27792184826823, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "32b997c2-d97c-452a-a5c1-ee4592a15b4c", + "number": "3101018", + "shortname": "KANALBRÜCKE", + "longname": "KANALBRÜCKE", + "km": 321.33, + "agency": "WSA MAGDEBURG", + "longitude": 11.689096910025187, + "latitude": 52.22968857131459, + "water": { + "shortname": "MLK", + "longname": "MITTELLANDKANAL" + } + }, + { + "uuid": "896aed46-8290-49b0-a6f8-90d53027cd1f", + "number": "26900910", + "shortname": "Koblenz-Lützel DFH", + "longname": "KOBLENZ-LÜTZEL DFH", + "km": 1.3, + "agency": "WSA KOBLENZ", + "longitude": 7.590794333417598, + "latitude": 50.36491217910447, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "9dbcac54-db55-4d24-88b2-74a0d75a68c4", + "number": "26900900", + "shortname": "KOBLENZ UP", + "longname": "KOBLENZ UP", + "km": 1.91, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.583151547037509, + "latitude": 50.36683229879485, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "dc1bb420-ec60-4bc3-bce2-b3869a2513df", + "number": "26900700", + "shortname": "LEHMEN UP", + "longname": "LEHMEN UP", + "km": 20.37, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.457699265736656, + "latitude": 50.278472281764, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "16578824-88de-4700-ab09-f61dbb1182bd", + "number": "26900510", + "shortname": "ALKEN", + "longname": "ALKEN", + "km": 24.13, + "agency": "WSA KOBLENZ", + "longitude": 7.446100426875524, + "latitude": 50.250183781799535, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "edc67ca3-b597-402a-9037-ff39ee816452", + "number": "26900500", + "shortname": "MÜDEN UP", + "longname": "MÜDEN UP", + "km": 36.8, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.336870435150974, + "latitude": 50.18243687736841, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "768df4e9-ed5a-4141-901b-e25ac404d559", + "number": "26900400", + "shortname": "COCHEM", + "longname": "COCHEM", + "km": 51.6, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.167665994277785, + "latitude": 50.14451463419676, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "583420a8-8903-485e-8c35-003814506838", + "number": "26900300", + "shortname": "FANKEL UP", + "longname": "FANKEL UP", + "km": 58.94, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.227314292498862, + "latitude": 50.12800012686217, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "20640279-2334-4acd-afb5-c8f3afc18379", + "number": "26900100", + "shortname": "SANKT ALDEGUND UP", + "longname": "SANKT ALDEGUND UP", + "km": 78.084, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.133981076586329, + "latitude": 50.08933523494645, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "ee861944-647f-4242-bf61-60f9b9d75fb7", + "number": "26700900", + "shortname": "ENKIRCH UP", + "longname": "ENKIRCH UP", + "km": 102.626, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.1229736756543645, + "latitude": 49.978080447156906, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "d867e7e9-feb9-4d36-8757-4afd865e697b", + "number": "26700600", + "shortname": "ZELTINGEN UP", + "longname": "ZELTINGEN UP", + "km": 123.4, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.016038265799196, + "latitude": 49.95018030455771, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "a392113c-d040-4b36-b47d-9099275bb308", + "number": "26700400", + "shortname": "WINTRICH UP", + "longname": "WINTRICH UP", + "km": 141.1, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.946620150874742, + "latitude": 49.8757095305584, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "dc344605-c507-4054-b4e3-293cf0602bc4", + "number": "26700200", + "shortname": "DETZEM UP", + "longname": "DETZEM UP", + "km": 165.4, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.845035832609275, + "latitude": 49.81851246888537, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "abd34ee6-a578-4639-b73d-fa4e08f40345", + "number": "26500150", + "shortname": "RUWER", + "longname": "RUWER", + "km": 185.94, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.704233541878358, + "latitude": 49.78305164589679, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "3bec53ca-444e-4014-a7b0-07b3591e954b", + "number": "26500100", + "shortname": "TRIER UP", + "longname": "TRIER UP", + "km": 195.3, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.626853440931648, + "latitude": 49.7321894338546, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "69308142-f78e-4877-9af8-e7221b01d303", + "number": "26100200", + "shortname": "GREVENMACHER UP", + "longname": "GREVENMACHER UP", + "km": 212.5, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.43926207002406, + "latitude": 49.673564112137775, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "bb5560fc-7995-40a2-b92f-3d828c67dcfa", + "number": "26100140", + "shortname": "WINCHERINGEN", + "longname": "WINCHERINGEN", + "km": 222.2, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.40445703822861, + "latitude": 49.60679094732159, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "dfdf753b-75bd-46f0-8cde-15545be9bfba", + "number": "26100130", + "shortname": "STADTBREDIMUS UP", + "longname": "STADTBREDIMUS UP", + "km": 229.44, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.372088777819485, + "latitude": 49.563031581358466, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "c263ea53-ca4d-41f5-b3f5-6178fec302aa", + "number": "26100100", + "shortname": "PERL", + "longname": "PERL", + "km": 241.8, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.369034818740495, + "latitude": 49.47257532014283, + "water": { + "shortname": "MOSEL", + "longname": "MOSEL" + } + }, + { + "uuid": "cfad4ee5-580f-4df2-918b-bc89c615ad0b", + "number": "582670", + "shortname": "GROSSE TRÄNKE WEHR UP", + "longname": "GROSSE TRÄNKE WEHR UP", + "km": 44.91, + "agency": "WSA BERLIN", + "longitude": 13.996388122651227, + "latitude": 52.36905285886845, + "water": { + "shortname": "MGS", + "longname": "MÜGGELSPREE" + } + }, + { + "uuid": "81630fdd-5949-412b-a2e0-d3da8bc8bcda", + "number": "582660", + "shortname": "GROSSE TRÄNKE WEHR OP", + "longname": "GROSSE TRÄNKE WEHR OP", + "km": 45.03, + "agency": "WSA BERLIN", + "longitude": 13.996955481640262, + "latitude": 52.36798821014676, + "water": { + "shortname": "MGS", + "longname": "MÜGGELSPREE" + } + }, + { + "uuid": "ad3a51da-2e25-4818-b96f-6a6d8a20d803", + "number": "596460", + "shortname": "DOEMITZ UP", + "longname": "DOEMITZ UP", + "km": 0.91, + "agency": "WSA LAUENBURG", + "longitude": 11.25997267677736, + "latitude": 53.140179594500715, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "ec8188ee-f4e4-4f5e-91ae-472e765060cd", + "number": "596450", + "shortname": "DOEMITZ OP", + "longname": "DOEMITZ OP", + "km": 1.01, + "agency": "WSA LAUENBURG", + "longitude": 11.260589695259206, + "latitude": 53.14105864230038, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "30739ff3-9d71-4e38-991c-0f7a2f54ed2d", + "number": "596430", + "shortname": "NEU KALLISS OP", + "longname": "NEU KALLISS OP", + "km": 4.97, + "agency": "WSA LAUENBURG", + "longitude": 11.286381754482113, + "latitude": 53.17204427845669, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "a5902c55-6ff4-4bbe-88a1-ebba45b03cec", + "number": "596410", + "shortname": "FINDENWIRUNSHIER OP", + "longname": "FINDENWIRUNSHIER OP", + "km": 5.84, + "agency": "WSA LAUENBURG", + "longitude": 11.294939237662819, + "latitude": 53.17767266477778, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "a64918a6-e6f5-495e-ad2d-a8e3655c9424", + "number": "596400", + "shortname": "MALLISS UP", + "longname": "MALLISS UP", + "km": 9.43, + "agency": "WSA LAUENBURG", + "longitude": 11.343941037741446, + "latitude": 53.19043907652982, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "497c29ee-32b2-4535-ac5f-3881a106c793", + "number": "596390", + "shortname": "MALLISS OP", + "longname": "MALLISS OP", + "km": 9.52, + "agency": "WSA LAUENBURG", + "longitude": 11.345035421942846, + "latitude": 53.19058707072247, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "0fab94c7-d51c-4b5a-a2ab-694c13efb024", + "number": "596370", + "shortname": "ELDENA OP", + "longname": "ELDENA OP", + "km": 18.0, + "agency": "WSA LAUENBURG", + "longitude": 11.42823379974127, + "latitude": 53.232053445064224, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "956ce5ff-1fc8-461e-ab2e-0ac70758bb46", + "number": "596350", + "shortname": "GUERITZ OP", + "longname": "GUERITZ OP", + "km": 22.78, + "agency": "WSA LAUENBURG", + "longitude": 11.480125603886963, + "latitude": 53.259841797981515, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "db4a69b2-65ba-4dd8-8b3e-eadf2cc241c6", + "number": "596330", + "shortname": "GRABOW OP", + "longname": "GRABOW OP", + "km": 30.85, + "agency": "WSA LAUENBURG", + "longitude": 11.573407662677484, + "latitude": 53.28314170140682, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "25530a3e-d0a8-456f-b7ea-6a3886843279", + "number": "596300", + "shortname": "KLEIN LAASCH WEHR OP", + "longname": "KLEIN LAASCH WEHR OP", + "km": 42.72, + "agency": "WSA LAUENBURG", + "longitude": 11.591912464894568, + "latitude": 53.35815517697002, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "c4381eb3-d21f-4bd1-bc1c-66c03b7d8bcf", + "number": "596280", + "shortname": "NEUSTADT GLEWE OP", + "longname": "NEUSTADT GLEWE OP", + "km": 46.2, + "agency": "WSA LAUENBURG", + "longitude": 11.58938542581256, + "latitude": 53.38167090333936, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "7bbd90ad-98e9-4415-8040-23500f2e01e7", + "number": "596250", + "shortname": "LEWITZ OP", + "longname": "LEWITZ OP", + "km": 50.66, + "agency": "WSA LAUENBURG", + "longitude": 11.601601292780472, + "latitude": 53.418392744462764, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "12499527-9476-45ed-80a2-b2b729742414", + "number": "596230", + "shortname": "GARWITZ UP", + "longname": "GARWITZ UP", + "km": 60.66, + "agency": "WSA LAUENBURG", + "longitude": 11.701096169203845, + "latitude": 53.45387084191535, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "bccaacb3-a9a5-44aa-b05b-3f29c3c6e38a", + "number": "596200", + "shortname": "MALCHOW WEHR OP", + "longname": "MALCHOW WEHR OP", + "km": 65.2, + "agency": "WSA LAUENBURG", + "longitude": 11.76515769172493, + "latitude": 53.44245184670891, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "3dec3921-6f01-4801-b648-a7f3ee33acd3", + "number": "5961801", + "shortname": "PARCHIM GÜTE", + "longname": "PARCHIM GÜTE", + "km": 72.57, + "agency": "WSA LAUENBURG", + "longitude": 11.834575288415659, + "latitude": 53.425253752100055, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "541c508a-00bf-4a9d-bd47-17fda98b349d", + "number": "596160", + "shortname": "NEUBURG OP", + "longname": "NEUBURG OP", + "km": 83.36, + "agency": "WSA LAUENBURG", + "longitude": 11.930331663383237, + "latitude": 53.416023168862274, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "a68cf527-a458-4d84-8171-7756813ca72c", + "number": "5961601", + "shortname": "BUROW", + "longname": "BUROW", + "km": 88.4, + "agency": "WSA LAUENBURG", + "longitude": 11.97491596320488, + "latitude": 53.39016084013592, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "d75442cf-87f8-4a56-8ee0-8ed7f94fe738", + "number": "596140", + "shortname": "LÜBZ OP", + "longname": "LÜBZ OP", + "km": 98.98, + "agency": "WSA LAUENBURG", + "longitude": 12.028491333716696, + "latitude": 53.46278605050716, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "faefa284-84cf-4c1e-aa73-dccdc3de729d", + "number": "596120", + "shortname": "BOBZIN OP", + "longname": "BOBZIN OP", + "km": 103.84, + "agency": "WSA LAUENBURG", + "longitude": 12.071875498467268, + "latitude": 53.49189290661576, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "06d86c6b-5ed0-475f-805a-a3ceb59af083", + "number": "596100", + "shortname": "BARKOW OP", + "longname": "BARKOW OP", + "km": 114.09, + "agency": "WSA LAUENBURG", + "longitude": 12.18888631862485, + "latitude": 53.46932142823997, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "506e6b03-1209-4650-8b3b-3cd2d4724b5f", + "number": "596090", + "shortname": "PLAU UP", + "longname": "PLAU UP", + "km": 120.0, + "agency": "WSA LAUENBURG", + "longitude": 12.259905514045807, + "latitude": 53.456706831572134, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "3ffddb2c-4c17-47d1-a7de-e1663d4031b7", + "number": "596080", + "shortname": "PLAU OP", + "longname": "PLAU OP", + "km": 120.08, + "agency": "WSA LAUENBURG", + "longitude": 12.26104246327684, + "latitude": 53.45676545155347, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "bd317edd-214a-4e11-a9dc-3cc71a2907c3", + "number": "596030", + "shortname": "WAREN", + "longname": "WAREN", + "km": 151.97, + "agency": "WSA LAUENBURG", + "longitude": 12.674191725059625, + "latitude": 53.514373651127926, + "water": { + "shortname": "MEW", + "longname": "MÜRITZ-ELDE-WASSERSTRASSE" + } + }, + { + "uuid": "19cc3b9a-546b-43dd-96a3-b0bf903672d2", + "number": "581010", + "shortname": "MIROW UP", + "longname": "MIROW UP", + "km": 22.888, + "agency": "WSA EBERSWALDE", + "longitude": 12.802760387855074, + "latitude": 53.27148908598734, + "water": { + "shortname": "MHW", + "longname": "MÜRITZ-HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "ab13c115-6924-4d88-822c-0704b8df4767", + "number": "581000", + "shortname": "MIROW OP", + "longname": "MIROW OP", + "km": 23.092, + "agency": "WSA EBERSWALDE", + "longitude": 12.800246962104048, + "latitude": 53.272548313078, + "water": { + "shortname": "MHW", + "longname": "MÜRITZ-HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "25582d3f-dc5f-4c70-bd08-e84fd13201ca", + "number": "23800900", + "shortname": "Mannheim Neckar", + "longname": "MANNHEIM NECKAR", + "km": 3.06, + "agency": "WSA MANNHEIM", + "longitude": 8.469364961262574, + "latitude": 49.49435041107864, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "827b2685-47ec-44df-a90f-980f5e0c1591", + "number": "23800760", + "shortname": "HEIDELBERG UP", + "longname": "HEIDELBERG UP", + "km": 26.05, + "agency": "WSA NECKAR", + "longitude": 8.717737397665669, + "latitude": 49.414687861109506, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "3944c1fd-39f5-47b1-bb6e-323db05d70e8", + "number": "23800745", + "shortname": "ZIEGELHAUSEN AMS", + "longname": "ZIEGELHAUSEN AMS", + "km": 29.4, + "agency": "WSA NECKAR", + "longitude": 8.777435199450947, + "latitude": 49.41094472438031, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "4c00a166-7d6d-48d7-b4dc-673b96b4041e", + "number": "23800690", + "shortname": "Rockenau SKA", + "longname": "ROCKENAU SKA", + "km": 60.7, + "agency": "WSA NECKAR", + "longitude": 9.005023979704324, + "latitude": 49.4382552226894, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "fc1072e4-61d4-4e89-bc70-c7e8860fd208", + "number": "23800620", + "shortname": "GUNDELSHEIM UP", + "longname": "GUNDELSHEIM UP", + "km": 93.8, + "agency": "WSA NECKAR", + "longitude": 9.153622055873617, + "latitude": 49.28139880369505, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "8559d1a0-4a03-410a-8910-44a089a07df8", + "number": "23800500", + "shortname": "Lauffen", + "longname": "LAUFFEN", + "km": 125.43, + "agency": "WSA NECKAR", + "longitude": 9.159786627616935, + "latitude": 49.072331408981775, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "46d8ed02-73fd-4958-8e2e-006c047d0576", + "number": "23800460", + "shortname": "Besigheim SKA", + "longname": "BESIGHEIM SKA", + "km": 136.284, + "agency": "WSA NECKAR", + "longitude": 9.152409807968652, + "latitude": 49.00733168810783, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "23517de9-9b81-4a34-ab82-adff6443c235", + "number": "23800420", + "shortname": "HESSIGHEIM SCHLEUSE UP", + "longname": "HESSIGHEIM SCHLEUSE UP", + "km": 142.93, + "agency": "WSA NECKAR", + "longitude": 9.19217387716745, + "latitude": 48.99313766018095, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "a73a9cb4-5bc2-4d42-b7cd-191d5e1ee307", + "number": "23800320", + "shortname": "Marbach Wehr UP", + "longname": "MARBACH WEHR UP", + "km": 158.931, + "agency": "WSA NECKAR", + "longitude": 9.239640072220388, + "latitude": 48.92880484557546, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "be7ce40e-5fff-42df-8386-b42694ca86da", + "number": "23800100", + "shortname": "Plochingen", + "longname": "PLOCHINGEN", + "km": 202.56, + "agency": "WSA NECKAR", + "longitude": 9.419189570661873, + "latitude": 48.7074340445856, + "water": { + "shortname": "NECKAR", + "longname": "NECKAR" + } + }, + { + "uuid": "963bdc26-34ad-43c8-b653-bbaa3466276a", + "number": "585850", + "shortname": "NEUHAUS OP", + "longname": "NEUHAUS OP", + "km": 2.7, + "agency": "WSA BERLIN", + "longitude": 14.290527807836531, + "latitude": 52.26642303805525, + "water": { + "shortname": "NSK", + "longname": "NEUHAUSER SPEISEKANAL" + } + }, + { + "uuid": "bf48cefd-0d00-4186-a366-343c25f43615", + "number": "585860", + "shortname": "NEUHAUS UP", + "longname": "NEUHAUS UP", + "km": 2.77, + "agency": "WSA BERLIN", + "longitude": 14.290377024435985, + "latitude": 52.265775062002575, + "water": { + "shortname": "NSK", + "longname": "NEUHAUSER SPEISEKANAL" + } + }, + { + "uuid": "e506460f-4577-4405-8cc3-cc36a4bb516d", + "number": "587500", + "shortname": "NIEGRIPP BP", + "longname": "NIEGRIPP BP", + "km": 0.59, + "agency": "WSA MAGDEBURG", + "longitude": 11.741879789763411, + "latitude": 52.24874233449674, + "water": { + "shortname": "NVK", + "longname": "NIEGRIPPER VERBINDUNGSKANAL" + } + }, + { + "uuid": "0e192297-1224-4465-b1c7-a476cc17f74d", + "number": "5970069", + "shortname": "AWK STROHBRÜCK", + "longname": "AWK STROHBRÜCK", + "km": 0.89, + "agency": "WSA KIEL-HOLTENAU", + "longitude": 9.967772383695177, + "latitude": 54.334833173187114, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "85fc0dac-a53f-4638-880d-40b24bb282f3", + "number": "5970091", + "shortname": "NOK BRUNSBÜTTEL", + "longname": "NOK BRUNSBÜTTEL", + "km": 2.116, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.149862765792989, + "latitude": 53.89839809255912, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "3954300d-f112-4fe6-8d0a-b06496372e36", + "number": "5970085", + "shortname": "NOK DÜKERSWISCH", + "longname": "NOK DÜKERSWISCH", + "km": 21.5, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.302242787433618, + "latitude": 54.0407199671534, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "4a904d59-d48f-4878-af7b-cbd955f342e0", + "number": "5970075", + "shortname": "NOK BREIHOLZ", + "longname": "NOK BREIHOLZ", + "km": 48.5, + "agency": "WSA BRUNSBÜTTEL", + "longitude": 9.552319101807727, + "latitude": 54.200163554376566, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "8c8afb56-88ea-483a-a7d4-033c22f53497", + "number": "5970074", + "shortname": "NOK RENDSBURG", + "longname": "NOK RENDSBURG", + "km": 63.5, + "agency": "WSA KIEL-HOLTENAU", + "longitude": 9.693628157618347, + "latitude": 54.29769193418942, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "d0ec2790-a870-405e-bb61-2dcc3cf47467", + "number": "5970067", + "shortname": "NOK KÖNIGSFÖRDE", + "longname": "NOK KÖNIGSFÖRDE", + "km": 79.63, + "agency": "WSA KIEL-HOLTENAU", + "longitude": 9.883252534676965, + "latitude": 54.356825078445006, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "8af24d6a-eecd-434e-9f1a-60ab6bc05490", + "number": "5979020", + "shortname": "NOK KIEL BINNEN", + "longname": "NOK KIEL BINNEN", + "km": 97.76, + "agency": "WSA KIEL-HOLTENAU", + "longitude": 10.13886996753095, + "latitude": 54.365693099387045, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "6dc44585-5b88-45d7-9c64-7c845408b698", + "number": "5650068", + "shortname": "NOK KIEL AUSSEN", + "longname": "NOK KIEL AUSSEN", + "km": 98.13, + "agency": "WSA KIEL-HOLTENAU", + "longitude": 10.144527384042059, + "latitude": 54.36485621246684, + "water": { + "shortname": "Nord-Ostsee-Kanal", + "longname": "NORD-OSTSEE-KANAL" + } + }, + { + "uuid": "c0ec139b-13b4-4f86-bee3-06665ad81a40", + "number": "9510070", + "shortname": "HELGOLAND BINNENHAFEN", + "longname": "HELGOLAND BINNENHAFEN", + "km": 0.0, + "agency": "WSA TÖNNING", + "longitude": 7.8899042173470155, + "latitude": 54.178893927371895, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "2852b9ab-d30e-4d04-ae06-3e946f48a0b1", + "number": "9550021", + "shortname": "PELLWORM ANLEGER", + "longname": "PELLWORM ANLEGER", + "km": 0.0, + "agency": "WSA TÖNNING", + "longitude": 8.702016358858556, + "latitude": 54.50091922540719, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "9c4c11f2-0548-4555-beac-ecfd36f9bd74", + "number": "9570010", + "shortname": "WITTDÜN", + "longname": "WITTDÜN", + "km": 0.0, + "agency": "WSA TÖNNING", + "longitude": 8.383942818908347, + "latitude": 54.63176040673401, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "4a2501bf-cb57-46bb-87d3-d6808286b31b", + "number": "9400090", + "shortname": "MINSENER OOG", + "longname": "MINSENER OOG", + "km": 1.0, + "agency": "WSA WILHELMSHAVEN", + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "8727ebfd-e2e1-43da-ab3d-fee48cff9acc", + "number": "9340020", + "shortname": "BORKUM FISCHERBALJE", + "longname": "BORKUM FISCHERBALJE", + "km": 83.47, + "agency": "WSA EMS-NORDSEE", + "longitude": 6.747895484692886, + "latitude": 53.55743551063739, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "478f21e9-906b-4c6f-a009-b5eabb052746", + "number": "9340030", + "shortname": "BORKUM SÜDSTRAND", + "longname": "BORKUM SÜDSTRAND", + "km": 89.23, + "agency": "WSA EMS-NORDSEE", + "longitude": 6.6614163107886855, + "latitude": 53.576853550272546, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "0d8233b8-36c9-4a24-ad77-a4e7c617932f", + "number": "9510075", + "shortname": "HELGOLAND SÜDHAFEN", + "longname": "HELGOLAND SÜDHAFEN", + "km": 100.0, + "agency": "WSA TÖNNING", + "longitude": 7.894312626997272, + "latitude": 54.174972252106315, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "5287a3e1-c540-4ab1-b52e-880d124cbc43", + "number": "9510095", + "shortname": "BÜSUM", + "longname": "BÜSUM", + "km": 100.0, + "agency": "WSA TÖNNING", + "longitude": 8.85910198183386, + "latitude": 54.12176072175226, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "e114aeec-c8d9-4d20-8fe1-8822058cb38b", + "number": "9530020", + "shortname": "HUSUM", + "longname": "HUSUM", + "km": 100.0, + "agency": "WSA TÖNNING", + "longitude": 9.024769717289855, + "latitude": 54.472283082352156, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "6233e901-2600-4b54-ae06-7b987934e99e", + "number": "9570040", + "shortname": "DAGEBÜLL", + "longname": "DAGEBÜLL", + "km": 100.0, + "agency": "WSA TÖNNING", + "longitude": 8.68697281957434, + "latitude": 54.730507310903775, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "733755fd-628f-4130-a694-aaba340531ba", + "number": "9570050", + "shortname": "HÖRNUM", + "longname": "HÖRNUM", + "km": 100.0, + "agency": "WSA TÖNNING", + "longitude": 8.296034563237153, + "latitude": 54.75809307879306, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "5e92d73f-e4ea-42c1-9f98-91536c17cdff", + "number": "9570070", + "shortname": "LIST AUF SYLT", + "longname": "LIST AUF SYLT", + "km": 100.0, + "agency": "WSA TÖNNING", + "longitude": 8.440408553744719, + "latitude": 55.01654386060568, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "04acd7e5-3cbc-4cdd-b4a9-f452e868f4d6", + "number": "9530010", + "shortname": "EIDER-SPERRWERK AP", + "longname": "EIDER-SPERRWERK AP", + "km": 101.1, + "agency": "WSA TÖNNING", + "longitude": 8.841914809442672, + "latitude": 54.265951411460115, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "c0244c0e-6ae6-40cb-a967-4039b2a0ce7c", + "number": "9360010", + "shortname": "NORDERNEY RIFFGAT", + "longname": "NORDERNEY RIFFGAT", + "km": 159.333, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.157758676264964, + "latitude": 53.69649848699198, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "a0c1dcb6-7812-48e6-8c01-f7edad7a2caf", + "number": "9390010", + "shortname": "LANGEOOG", + "longname": "LANGEOOG", + "km": 182.129, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.501653628801439, + "latitude": 53.72323313797535, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "662c4b5e-0241-456d-ac7d-9f62fd95c0d1", + "number": "9410010", + "shortname": "SPIEKEROOG", + "longname": "SPIEKEROOG", + "km": 194.374, + "agency": "WSA EMS-NORDSEE", + "longitude": 7.681934661515978, + "latitude": 53.74923744755749, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "e574d0af-5c63-4306-b1d3-43b7359de06d", + "number": "9510010", + "shortname": "ZEHNERLOCH", + "longname": "ZEHNERLOCH", + "km": 732.2, + "agency": "WSA CUXHAVEN", + "longitude": 8.658229962288056, + "latitude": 53.9555085283345, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "3ff99b92-4396-4fa7-af73-02b9c015dcad", + "number": "9510132", + "shortname": "MITTELGRUND", + "longname": "MITTELGRUND", + "km": 733.7, + "agency": "WSA CUXHAVEN", + "longitude": 8.636197332307725, + "latitude": 53.94207507306487, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "f0197bcf-6846-4c0a-9659-0c2626a9bcf0", + "number": "9510060", + "shortname": "BAKE C - SCHARHÖRN", + "longname": "BAKE C - SCHARHÖRN", + "km": 745.0, + "agency": "WSA CUXHAVEN", + "longitude": 8.462560576653868, + "latitude": 53.96703949415204, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "e8daa3e2-77d1-4cfa-9ac9-501e7b2b4b0a", + "number": "9510063", + "shortname": "BAKE A", + "longname": "BAKE A", + "km": 755.6, + "agency": "WSA CUXHAVEN", + "longitude": 8.315139865852299, + "latitude": 53.98442129888576, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "104fdc24-1dc6-4cb7-b44f-10bd02e13f40", + "number": "9510066", + "shortname": "BAKE Z", + "longname": "BAKE Z", + "km": 756.2, + "agency": "WSA CUXHAVEN", + "longitude": 8.314601507551739, + "latitude": 54.01351911664601, + "water": { + "shortname": "NORDSEE", + "longname": "NORDSEE" + } + }, + { + "uuid": "74134dc6-8e26-4195-9cdc-c22aa0a3558c", + "number": "581530", + "shortname": "BISCHOFSWERDER UP", + "longname": "BISCHOFSWERDER UP", + "km": 4.196, + "agency": "WSA EBERSWALDE", + "longitude": 13.380954189400333, + "latitude": 52.89222553500098, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "16a780aa-475d-41dc-a8ec-20488415b6d7", + "number": "581520", + "shortname": "BISCHOFSWERDER OP", + "longname": "BISCHOFSWERDER OP", + "km": 4.53, + "agency": "WSA EBERSWALDE", + "longitude": 13.381167849265402, + "latitude": 52.892870089815965, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "721d7dbf-c947-405c-8dba-e672a091f4c0", + "number": "580170", + "shortname": "ZEHDENICK UP", + "longname": "ZEHDENICK UP", + "km": 15.78, + "agency": "WSA EBERSWALDE", + "longitude": 13.333280078975475, + "latitude": 52.98200669975525, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "a9b8e24c-012a-48dc-a823-d48c1637cb42", + "number": "580160", + "shortname": "ZEHDENICK OP", + "longname": "ZEHDENICK OP", + "km": 16.06, + "agency": "WSA EBERSWALDE", + "longitude": 13.331210383272076, + "latitude": 52.98345874560772, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "470acd2a-f3e7-4fd2-96b0-e90344ee51bf", + "number": "580090", + "shortname": "BREDEREICHE UP", + "longname": "BREDEREICHE UP", + "km": 47.631, + "agency": "WSA EBERSWALDE", + "longitude": 13.241418441289687, + "latitude": 53.13479777611718, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "308f5979-4ab8-48ab-b618-081aa285559e", + "number": "580080", + "shortname": "BREDEREICHE OP", + "longname": "BREDEREICHE OP", + "km": 47.992, + "agency": "WSA EBERSWALDE", + "longitude": 13.239349671437513, + "latitude": 53.138198127512204, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "a5830277-af1d-4c64-be72-00591f36216c", + "number": "580070", + "shortname": "FÜRSTENBERG UP", + "longname": "FÜRSTENBERG UP", + "km": 60.661, + "agency": "WSA EBERSWALDE", + "longitude": 13.146452716312501, + "latitude": 53.18164183257601, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "2c95f83d-4669-4553-a18d-3f493176d34d", + "number": "580060", + "shortname": "FÜRSTENBERG OP", + "longname": "FÜRSTENBERG OP", + "km": 60.802, + "agency": "WSA EBERSWALDE", + "longitude": 13.144578840522726, + "latitude": 53.18148911832933, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "da3b5de9-bb1d-4545-a172-fa29301d552e", + "number": "580030", + "shortname": "WESENBERG UP", + "longname": "WESENBERG UP", + "km": 81.722, + "agency": "WSA EBERSWALDE", + "longitude": 12.989495625819774, + "latitude": 53.27391359587731, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "7909d3f7-ef5d-4321-b76d-712d9b0a0c68", + "number": "580020", + "shortname": "WESENBERG OP", + "longname": "WESENBERG OP", + "km": 81.797, + "agency": "WSA EBERSWALDE", + "longitude": 12.98917275043353, + "latitude": 53.29239095161776, + "water": { + "shortname": "OHW", + "longname": "OBERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "ca3f535b-4a32-4dd7-a56b-2ac20dea4472", + "number": "603140", + "shortname": "RATZDORF", + "longname": "RATZDORF", + "km": 542.55, + "agency": "WSA EBERSWALDE", + "longitude": 14.752950062772658, + "latitude": 52.07053518750326, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "8675aa70-cfbc-471a-8566-dcc851f201d3", + "number": "603000", + "shortname": "EISENHÜTTENSTADT", + "longname": "EISENHÜTTENSTADT", + "km": 554.138, + "agency": "WSA EBERSWALDE", + "longitude": 14.687797397636508, + "latitude": 52.153152572931255, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "bffdf7f2-6200-42a2-a4bc-a8111e27e043", + "number": "603031", + "shortname": "FRANKFURT1 (ODER)", + "longname": "FRANKFURT1 (ODER)", + "km": 585.281, + "agency": "WSA EBERSWALDE", + "longitude": 14.551715819696117, + "latitude": 52.35780618843963, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "16258271-ec03-4542-873c-1642c8b654c9", + "number": "603040", + "shortname": "KIETZ", + "longname": "KIETZ", + "km": 614.793, + "agency": "WSA EBERSWALDE", + "longitude": 14.630300056553716, + "latitude": 52.57759504433102, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "6298a8f9-7c77-4605-a55a-278c61cc8f50", + "number": "603050", + "shortname": "KIENITZ", + "longname": "KIENITZ", + "km": 632.923, + "agency": "WSA EBERSWALDE", + "longitude": 14.43323010073256, + "latitude": 52.679836828305575, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "f7a639a4-b824-445c-b158-108ebd70cc9a", + "number": "603080", + "shortname": "HOHENSAATEN-FINOW", + "longname": "HOHENSAATEN-FINOW", + "km": 664.951, + "agency": "WSA EBERSWALDE", + "longitude": 14.141124665027109, + "latitude": 52.8647370158204, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "30bff0df-8333-49ec-8fd7-a2d4c0db1cb1", + "number": "603100", + "shortname": "STÜTZKOW", + "longname": "STÜTZKOW", + "km": 680.648, + "agency": "WSA EBERSWALDE", + "longitude": 14.193352094491908, + "latitude": 52.983720430348214, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "e28babaa-7801-49a2-9c28-58701549ce5d", + "number": "603130", + "shortname": "SCHWEDT-ODERBRÜCKE", + "longname": "SCHWEDT-ODERBRÜCKE", + "km": 690.606, + "agency": "WSA EBERSWALDE", + "longitude": 14.3116290097497, + "latitude": 53.03557614439063, + "water": { + "shortname": "ODER", + "longname": "ODER" + } + }, + { + "uuid": "8b51c505-9b1c-40d0-957f-7461473602e1", + "number": "580272", + "shortname": "OHv km 1,467 (Blaues Wunder)", + "longname": "OHV KM 1,467 (BLAUES WUNDER)", + "km": 1.467, + "agency": "WSA EBERSWALDE", + "longitude": 13.24354875517293, + "latitude": 52.750191357654586, + "water": { + "shortname": "OHV", + "longname": "ORANIENBURGER HAVEL" + } + }, + { + "uuid": "0a6fe221-9fc9-46e0-802f-9c367a32ed72", + "number": "581840", + "shortname": "SACHSENHAUSEN UP", + "longname": "SACHSENHAUSEN UP", + "km": 29.809, + "agency": "WSA EBERSWALDE", + "longitude": 13.242842495086375, + "latitude": 52.77636806270695, + "water": { + "shortname": "OrK", + "longname": "ORANIENBURGER KANAL" + } + }, + { + "uuid": "adbd3144-1774-45e8-8eb7-60f01a712426", + "number": "580240", + "shortname": "SACHSENHAUSEN OP", + "longname": "SACHSENHAUSEN OP", + "km": 29.818, + "agency": "WSA EBERSWALDE", + "longitude": 13.242904058049188, + "latitude": 52.77644829795338, + "water": { + "shortname": "OrK", + "longname": "ORANIENBURGER KANAL" + } + }, + { + "uuid": "f0f78cc4-1ab4-4548-abed-63c65a267a8a", + "number": "42840453", + "shortname": "DALWIGKSTHAL", + "longname": "DALWIGKSTHAL", + "km": 11.41, + "agency": "REGIERUNGSPRÄSIDIUM KASSEL", + "longitude": 8.796302499303486, + "latitude": 51.150027343721874, + "water": { + "shortname": "ORKE", + "longname": "ORKE" + } + }, + { + "uuid": "cf8a3ea2-d5d2-4bf2-ba6b-cf1309d18bb1", + "number": "5980010", + "shortname": "BREMERVÖRDE", + "longname": "BREMERVÖRDE", + "km": 0.03, + "agency": "WSA CUXHAVEN", + "longitude": 9.15477959513822, + "latitude": 53.48412059027301, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "e5e02890-87bd-4fab-b590-ffa557c3532e", + "number": "5980030", + "shortname": "HECHTHAUSEN", + "longname": "HECHTHAUSEN", + "km": 30.94, + "agency": "WSA CUXHAVEN", + "longitude": 9.252769624045799, + "latitude": 53.64052581440595, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "86d07669-4670-48a1-8f30-7d7b26224ad6", + "number": "126004", + "shortname": "ACHTHÖFENER FLETH SIEL", + "longname": "ACHTHÖFENER FLETH SIEL", + "km": 49.1, + "agency": "WSA HAMBURG", + "longitude": 9.163392656155676, + "latitude": 53.701580829948504, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "04790e03-4353-4e80-beef-b3ed439484bc", + "number": "126003", + "shortname": "NEUENSEER SCHLEUSENFLETH SIEL", + "longname": "NEUENSEER SCHLEUSENFLETH SIEL", + "km": 58.9, + "agency": "WSA HAMBURG", + "longitude": 9.130903597451038, + "latitude": 53.780686477524796, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "f44e7220-892e-40b5-8ef4-3da129c2a6ae", + "number": "126002", + "shortname": "GEVERSDORF BRÜCKE", + "longname": "GEVERSDORF BRÜCKE", + "km": 64.45, + "agency": "WSA HAMBURG", + "longitude": 9.08045772011446, + "latitude": 53.80124315024519, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "7cb4566b-c584-4167-8736-f52ca7fd837d", + "number": "9000000532", + "shortname": "OSTE-SPERRWERK BP", + "longname": "OSTE-SPERRWERK BP", + "km": 69.575, + "agency": "WSA CUXHAVEN", + "longitude": 9.039876779241029, + "latitude": 53.82037399572021, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "8c3295dc-fe73-45bc-9a7b-679d4aaad0cf", + "number": "9000000590", + "shortname": "OSTE-SPERRWERK AP", + "longname": "OSTE-SPERRWERK AP", + "km": 69.575, + "agency": "WSA CUXHAVEN", + "longitude": 9.039724945414594, + "latitude": 53.820383031503816, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "9427fafc-7146-4be1-a71e-4e4658236037", + "number": "126019", + "shortname": "BELUM PEGEL", + "longname": "BELUM PEGEL", + "km": 69.89, + "agency": "WSA HAMBURG", + "longitude": 9.03713057987013, + "latitude": 53.822764794448304, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "a9e93be0-cb0e-4418-ba3c-94e7869f6199", + "number": "5980060", + "shortname": "BELUM", + "longname": "BELUM", + "km": 69.89, + "agency": "WSA CUXHAVEN", + "longitude": 9.03713057987013, + "latitude": 53.822764794448304, + "water": { + "shortname": "OSTE", + "longname": "OSTE" + } + }, + { + "uuid": "b8d05bf9-2ef2-416d-ba70-b5dba74fe777", + "number": "9650024", + "shortname": "ALTHAGEN", + "longname": "ALTHAGEN", + "agency": "WSA OSTSEE", + "longitude": 12.41896048297562, + "latitude": 54.37175745952659, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "09227288-8c72-4b12-88fe-8765d1b2b400", + "number": "9650040", + "shortname": "BARHÖFT", + "longname": "BARHÖFT", + "agency": "WSA OSTSEE", + "longitude": 13.032221032802527, + "latitude": 54.434539278468485, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "220ff4c6-83da-4a1b-9c13-dfee5a2a8798", + "number": "9640015", + "shortname": "WARNEMÜNDE", + "longname": "WARNEMÜNDE", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 12.103388257063223, + "latitude": 54.16973095319337, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "00c33ed9-6bea-45b4-8728-7edc7e43e2f3", + "number": "9650030", + "shortname": "BARTH", + "longname": "BARTH", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 12.723220564867576, + "latitude": 54.3712205420075, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "b9163121-2747-4d2b-bcf5-ab5ff7396e56", + "number": "9650043", + "shortname": "STRALSUND", + "longname": "STRALSUND", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.119014797980462, + "latitude": 54.30568214387992, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "340707f4-5d35-4898-8b34-95ea3f4206b3", + "number": "9650070", + "shortname": "STAHLBRODE", + "longname": "STAHLBRODE", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.289714493128557, + "latitude": 54.234461064433, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "b327e35c-5dad-4b79-9cef-60fbd504eb37", + "number": "9650080", + "shortname": "WOLGAST", + "longname": "WOLGAST", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.770379520779166, + "latitude": 54.04173732927731, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "492f85b8-e5c6-439e-8e14-08ca78f10dce", + "number": "9670046", + "shortname": "NEUENDORF HAFEN", + "longname": "NEUENDORF HAFEN", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.093555157353734, + "latitude": 54.52449361393186, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "905e7328-b8aa-4b08-9c22-c864101e462b", + "number": "9670050", + "shortname": "KLOSTER", + "longname": "KLOSTER", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.111362240678352, + "latitude": 54.584766408799105, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "4b348b56-b08c-4522-9042-49c1edb45d0d", + "number": "9670055", + "shortname": "WITTOWER FÄHRE", + "longname": "WITTOWER FÄHRE", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.245134582969705, + "latitude": 54.55759356112303, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "91922b9b-ef7b-4aae-95a1-9d6a9e61969a", + "number": "9670063", + "shortname": "LAUTERBACH", + "longname": "LAUTERBACH", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.499696966293504, + "latitude": 54.3416047141194, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "9e7b2a4d-cfe8-4524-8a1e-c196ea897e9f", + "number": "9670065", + "shortname": "SASSNITZ", + "longname": "SASSNITZ", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.643061607137538, + "latitude": 54.510937403290725, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "d1c9bb3c-2929-46a8-a338-adfddf0ef524", + "number": "9670067", + "shortname": "THIESSOW", + "longname": "THIESSOW", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.7097569727335, + "latitude": 54.280666554541554, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "1fa822e6-fb0c-4331-83f1-749972046dca", + "number": "9690077", + "shortname": "RUDEN", + "longname": "RUDEN", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.7719056374206, + "latitude": 54.204347817762475, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "087b6386-0957-4b47-af7d-ecd62f6d63ce", + "number": "9690078", + "shortname": "GREIFSWALD OIE", + "longname": "GREIFSWALD OIE", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.907208142774282, + "latitude": 54.241313302688674, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "f53bb77f-e55a-468f-b7be-b66baf7e3e5b", + "number": "9690085", + "shortname": "KARLSHAGEN", + "longname": "KARLSHAGEN", + "km": 0.0, + "agency": "WSA OSTSEE", + "longitude": 13.807622038541579, + "latitude": 54.10786008932983, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "6b53ef42-5bd9-4366-ace3-442e307bec60", + "number": "9650073", + "shortname": "GREIFSWALD-WIECK", + "longname": "GREIFSWALD-WIECK", + "km": 1.0, + "agency": "WSA OSTSEE", + "longitude": 13.457152923470629, + "latitude": 54.097711316905006, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "9e19c411-f728-4a43-a057-39d4155c71cc", + "number": "9610010", + "shortname": "FLENSBURG", + "longname": "FLENSBURG", + "km": 4.0, + "agency": "WSA OSTSEE", + "longitude": 9.433017666212919, + "latitude": 54.795056746219686, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "5a33bf14-6bdc-4666-b2e3-ac78e3083e2a", + "number": "9610015", + "shortname": "LANGBALLIGAU", + "longname": "LANGBALLIGAU", + "km": 35.0, + "agency": "WSA OSTSEE", + "longitude": 9.654140992315282, + "latitude": 54.823267257721, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "22b7dcb3-8c42-4f71-9191-49143ba3a828", + "number": "9610020", + "shortname": "LT KALKGRUND", + "longname": "LT KALKGRUND", + "km": 61.5, + "agency": "WSA OSTSEE", + "longitude": 9.888008024317406, + "latitude": 54.82459898726829, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "70d4f87f-4489-455a-a435-d6df9e09a87e", + "number": "9610025", + "shortname": "SCHLEIMÜNDE SP", + "longname": "SCHLEIMÜNDE SP", + "km": 78.0, + "agency": "WSA OSTSEE", + "longitude": 10.036688584395906, + "latitude": 54.67273599933948, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "d22c341b-80c2-436d-98e1-8a2575bc975a", + "number": "9630007", + "shortname": "TIMMENDORF POEL", + "longname": "TIMMENDORF POEL", + "km": 100.0, + "agency": "WSA OSTSEE", + "longitude": 11.375642142698938, + "latitude": 53.991996731525816, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "95a0ab45-a9ac-4f9a-93e9-b0ffa1c57b5f", + "number": "9630008", + "shortname": "WISMAR-BAUMHAUS", + "longname": "WISMAR-BAUMHAUS", + "km": 100.0, + "agency": "WSA OSTSEE", + "longitude": 11.457917784463795, + "latitude": 53.898761570190004, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "06219dd9-a2c4-463c-9619-623b3c026cbc", + "number": "9610070", + "shortname": "HEILIGENHAFEN", + "longname": "HEILIGENHAFEN", + "km": 123.0, + "agency": "WSA OSTSEE", + "longitude": 11.005664168144426, + "latitude": 54.37295933067423, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "3ad4013f-644b-47f5-a641-44b332bfecb2", + "number": "9610066", + "shortname": "KIEL-HOLTENAU", + "longname": "KIEL-HOLTENAU", + "km": 150.0, + "agency": "WSA OSTSEE", + "longitude": 10.157049612180774, + "latitude": 54.37208664756846, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "736437d7-0f6f-41b7-bc69-5ed721da4f85", + "number": "9610050", + "shortname": "LT KIEL", + "longname": "LT KIEL", + "km": 177.75, + "agency": "WSA OSTSEE", + "longitude": 10.273267865043422, + "latitude": 54.49958875723429, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "3f0b6b74-80a9-4576-a3cb-ea967dfc349f", + "number": "9610080", + "shortname": "NEUSTADT", + "longname": "NEUSTADT", + "km": 263.0, + "agency": "WSA OSTSEE", + "longitude": 10.804987829789338, + "latitude": 54.09652306158376, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "8effc15d-8583-4ac6-9f42-1b63c47f92b0", + "number": "9610075", + "shortname": "MARIENLEUCHTE", + "longname": "MARIENLEUCHTE", + "km": 284.7, + "agency": "WSA OSTSEE", + "longitude": 11.238874338140052, + "latitude": 54.4966302285817, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "b09f2243-60f0-469a-8f3b-0ea6abc83267", + "number": "9610035", + "shortname": "KAPPELN", + "longname": "KAPPELN", + "km": 507.3, + "agency": "WSA OSTSEE", + "longitude": 9.937938134263064, + "latitude": 54.66438387741342, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "09370c05-1041-4395-a5d4-b8db6e59c4c8", + "number": "9610040", + "shortname": "SCHLESWIG", + "longname": "SCHLESWIG", + "km": 540.0, + "agency": "WSA OSTSEE", + "longitude": 9.569058518839194, + "latitude": 54.51143165937903, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "1faa9b2c-c269-4662-af70-ef11da27cc1c", + "number": "9610045", + "shortname": "ECKERNFÖRDE", + "longname": "ECKERNFÖRDE", + "km": 612.0, + "agency": "WSA OSTSEE", + "longitude": 9.83600726774434, + "latitude": 54.47470273574418, + "water": { + "shortname": "OSTSEE", + "longname": "OSTSEE" + } + }, + { + "uuid": "25ca1bef-4f8e-4523-89f5-7d8593e46370", + "number": "502300", + "shortname": "PAREY EP", + "longname": "PAREY EP", + "km": 0.685, + "agency": "WSA BRANDENBURG", + "longitude": 11.976654924884564, + "latitude": 52.40384693929311, + "water": { + "shortname": "PVK", + "longname": "PAREYER VERBINDUNGSKANAL" + } + }, + { + "uuid": "bafddcbf-4108-431e-9f57-568be08fd538", + "number": "587530", + "shortname": "PAREY UP", + "longname": "PAREY UP", + "km": 0.85, + "agency": "WSA BRANDENBURG", + "longitude": 11.979050287236685, + "latitude": 52.40306554478612, + "water": { + "shortname": "PVK", + "longname": "PAREYER VERBINDUNGSKANAL" + } + }, + { + "uuid": "8ba772ed-e45b-4be8-b91d-0c6c92de59e4", + "number": "9660009", + "shortname": "AALBUDE", + "longname": "AALBUDE", + "km": 14.947, + "agency": "WSA OSTSEE", + "longitude": 12.888041935015819, + "latitude": 53.847926808320594, + "water": { + "shortname": "PEENE", + "longname": "PEENE" + } + }, + { + "uuid": "b7e238e8-29ec-4522-8252-b2cae7d4f58e", + "number": "9660007", + "shortname": "DEMMIN", + "longname": "DEMMIN", + "km": 31.779, + "agency": "WSA OSTSEE", + "longitude": 13.026562956417967, + "latitude": 53.916354211989876, + "water": { + "shortname": "PEENE", + "longname": "PEENE" + } + }, + { + "uuid": "a3328262-207d-4e65-96d8-202368ca0cb8", + "number": "9660005", + "shortname": "JARMEN", + "longname": "JARMEN", + "km": 61.686, + "agency": "WSA OSTSEE", + "longitude": 13.342282249314371, + "latitude": 53.92875181683916, + "water": { + "shortname": "PEENE", + "longname": "PEENE" + } + }, + { + "uuid": "22fd01e0-090b-476b-80aa-f4586e259785", + "number": "9660001", + "shortname": "ANKLAM", + "longname": "ANKLAM", + "km": 89.822, + "agency": "WSA OSTSEE", + "longitude": 13.70427795181407, + "latitude": 53.86275452367867, + "water": { + "shortname": "PEENE", + "longname": "PEENE" + } + }, + { + "uuid": "575da86f-d975-4837-b6f5-6f19c3a5e4b6", + "number": "5970016", + "shortname": "UETERSEN", + "longname": "UETERSEN", + "km": 9.51, + "agency": "WSA HAMBURG", + "longitude": 9.677083802370525, + "latitude": 53.67819251632445, + "water": { + "shortname": "PINNAU", + "longname": "PINNAU" + } + }, + { + "uuid": "26259e8f-7d2d-47e0-8851-0257542b63b3", + "number": "5970018", + "shortname": "PINNAU-SPERRWERK BP", + "longname": "PINNAU-SPERRWERK BP", + "km": 18.1, + "agency": "WSA HAMBURG", + "longitude": 9.55875907937455, + "latitude": 53.67116721837194, + "water": { + "shortname": "PINNAU", + "longname": "PINNAU" + } + }, + { + "uuid": "5e10e1e7-9115-4bd7-ad57-e2062f516891", + "number": "580412", + "shortname": "POTSDAM", + "longname": "POTSDAM", + "km": 26.63, + "agency": "WSA BRANDENBURG", + "longitude": 13.07207102000197, + "latitude": 52.399886661642164, + "water": { + "shortname": "PHv", + "longname": "POTSDAMER HAVEL" + } + }, + { + "uuid": "1b559a8e-02e4-4cdb-bf51-1021a0d1d954", + "number": "2330033", + "shortname": "WUK_BREISACH_2", + "longname": "WUK_BREISACH_2", + "agency": "BUNDESANSTALT FÜR GEWÄSSERKUNDE", + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "94f6eff1-4f3f-4850-82e0-a086198e9ffd", + "number": "2310010", + "shortname": "Basel-Rheinhalle", + "longname": "BASEL-RHEINHALLE", + "km": 165.9, + "agency": "BUNDESAMT FÜR UMWELT", + "longitude": 7.616666024691213, + "latitude": 47.559486101527995, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "06b978dd-8c4d-48ac-a0c8-2c16681ed281", + "number": "23300130", + "shortname": "RHEINWEILER", + "longname": "RHEINWEILER", + "km": 186.178, + "agency": "WSA OBERRHEIN", + "longitude": 7.52927487471016, + "latitude": 47.711058939467094, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "9da1ad2b-88db-4cbb-8132-eddfab07d5ba", + "number": "23300320", + "shortname": "BREISACH", + "longname": "BREISACH", + "km": 227.55, + "agency": "WSA OBERRHEIN", + "longitude": 7.572569952756944, + "latitude": 48.043210484541135, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "5389b878-fad5-4f37-bb87-e6cb36b7078b", + "number": "23300580", + "shortname": "RUST", + "longname": "RUST", + "km": 254.153, + "agency": "WSA OBERRHEIN", + "longitude": 7.682372588415029, + "latitude": 48.25746911757686, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "787e5d63-61e2-48cc-acf0-633e2bf923f2", + "number": "23300800", + "shortname": "OTTENHEIM", + "longname": "OTTENHEIM", + "km": 270.593, + "agency": "WSA OBERRHEIN", + "longitude": 7.732656673587074, + "latitude": 48.38464389312275, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "23af9b02-5c82-4f6e-acb8-f92a06e5e4da", + "number": "23300900", + "shortname": "KEHL-KRONENHOF", + "longname": "KEHL-KRONENHOF", + "km": 292.25, + "agency": "WSA OBERRHEIN", + "longitude": 7.8076918053124515, + "latitude": 48.56332017196366, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "b02be240-1364-4c97-8bb6-675d7d842332", + "number": "23500600", + "shortname": "IFFEZHEIM", + "longname": "IFFEZHEIM", + "km": 336.2, + "agency": "WSA OBERRHEIN", + "longitude": 8.116901503461627, + "latitude": 48.85214940730764, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "6b774802-fcb5-49ae-8ecb-ecaf1a278b1c", + "number": "23500700", + "shortname": "PLITTERSDORF", + "longname": "PLITTERSDORF", + "km": 340.215, + "agency": "WSA OBERRHEIN", + "longitude": 8.135927309547403, + "latitude": 48.88596738135841, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "b6c6d5c8-e2d5-4469-8dd8-fa972ef7eaea", + "number": "23700200", + "shortname": "MAXAU", + "longname": "MAXAU", + "km": 362.327, + "agency": "WSA OBERRHEIN", + "longitude": 8.30556376651173, + "latitude": 49.03897743979623, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "2cb8ae5b-c5c9-4fa8-bac0-bb724f2754f4", + "number": "23700600", + "shortname": "SPEYER", + "longname": "SPEYER", + "km": 400.6, + "agency": "WSA OBERRHEIN", + "longitude": 8.448704637325553, + "latitude": 49.32380651197393, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "57090802-c51a-4d09-8340-b4453cd0e1f5", + "number": "23700700", + "shortname": "MANNHEIM", + "longname": "MANNHEIM", + "km": 424.733, + "agency": "WSA OBERRHEIN", + "longitude": 8.45516501950902, + "latitude": 49.4839399720476, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "844a620f-f3b8-4b6b-8e3c-783ae2aa232a", + "number": "23900200", + "shortname": "WORMS", + "longname": "WORMS", + "km": 443.4, + "agency": "WSA OBERRHEIN", + "longitude": 8.37751894880782, + "latitude": 49.631836923283544, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "e020e651-e422-46d3-ae28-34887c5a4a8e", + "number": "3329", + "shortname": "KONSTANZ-RHEIN", + "longname": "KONSTANZ-RHEIN", + "km": 475.0, + "agency": "REGIERUNGSPRÄSIDIUM FREIBURG", + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "d28e7ed1-3317-41c5-bec6-725369ed1171", + "number": "23900600", + "shortname": "NIERSTEIN-OPPENHEIM", + "longname": "NIERSTEIN-OPPENHEIM", + "km": 480.606, + "agency": "WSA OBERRHEIN", + "longitude": 8.352376086475747, + "latitude": 49.864981402907794, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "a37a9aa3-45e9-4d90-9df6-109f3a28a5af", + "number": "25100100", + "shortname": "MAINZ", + "longname": "MAINZ", + "km": 498.27, + "agency": "WSA RHEIN", + "longitude": 8.27531853709192, + "latitude": 50.00399505526266, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "665be0fe-5e38-43f6-8b04-02a93bdbeeb4", + "number": "25100300", + "shortname": "OESTRICH", + "longname": "OESTRICH", + "km": 518.08, + "agency": "WSA RHEIN", + "longitude": 8.030047855742515, + "latitude": 50.00286634024613, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "0309cd61-90c9-470e-99d4-2ee4fb2c5f84", + "number": "25300200", + "shortname": "BINGEN", + "longname": "BINGEN", + "km": 528.36, + "agency": "WSA RHEIN", + "longitude": 7.899667963397107, + "latitude": 49.9703420958729, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "1d26e504-7f9e-480a-b52c-5932be6549ab", + "number": "25700100", + "shortname": "KAUB", + "longname": "KAUB", + "km": 546.3, + "agency": "WSA RHEIN", + "longitude": 7.764961728401985, + "latitude": 50.08543844622119, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "550eb7e9-172e-48e4-ae1e-d1b761b42223", + "number": "25700300", + "shortname": "SANKT GOAR", + "longname": "SANKT GOAR", + "km": 556.43, + "agency": "WSA RHEIN", + "longitude": 7.712614955322655, + "latitude": 50.15255698898359, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "2ff6379d-d168-4022-8da0-16846d45ef9b", + "number": "25700500", + "shortname": "BOPPARD", + "longname": "BOPPARD", + "km": 570.45, + "agency": "WSA RHEIN", + "longitude": 7.592132313690253, + "latitude": 50.232913717702615, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "d6dc44d1-63ac-4871-b175-60ac4040069a", + "number": "25700600", + "shortname": "BRAUBACH", + "longname": "BRAUBACH", + "km": 579.98, + "agency": "WSA RHEIN", + "longitude": 7.645667430975122, + "latitude": 50.27050106630473, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "4c7d796a-39f2-4f26-97a9-3aad01713e29", + "number": "25900700", + "shortname": "KOBLENZ", + "longname": "KOBLENZ", + "km": 591.49, + "agency": "WSA RHEIN", + "longitude": 7.60474054165621, + "latitude": 50.35863947564839, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "dc407f1e-e25f-4995-9feb-5bacc8658149", + "number": "27100370", + "shortname": "Neuwied Stadt", + "longname": "NEUWIED STADT", + "km": 608.04, + "agency": "DEICHINFORMATIONSZENTRUM NEUWIED", + "longitude": 7.457452746188491, + "latitude": 50.424277186208855, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "5735892a-ec65-4b29-97c5-50939aa9584e", + "number": "27100400", + "shortname": "ANDERNACH", + "longname": "ANDERNACH", + "km": 613.78, + "agency": "WSA RHEIN", + "longitude": 7.392055788752456, + "latitude": 50.44339015190925, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "b45359df-c020-4314-adb1-d1921db642da", + "number": "27100700", + "shortname": "OBERWINTER", + "longname": "OBERWINTER", + "km": 638.19, + "agency": "WSA RHEIN", + "longitude": 7.210222050979756, + "latitude": 50.613690410658755, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "593647aa-9fea-43ec-a7d6-6476a76ae868", + "number": "2710080", + "shortname": "BONN", + "longname": "BONN", + "km": 654.8, + "agency": "WSA RHEIN", + "longitude": 7.108045442593696, + "latitude": 50.7363979694278, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "a6ee8177-107b-47dd-bcfd-30960ccc6e9c", + "number": "2730010", + "shortname": "KÖLN", + "longname": "KÖLN", + "km": 688.0, + "agency": "WSA RHEIN", + "longitude": 6.963300159749653, + "latitude": 50.93694925646438, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "8f7e5f92-1153-4f93-acba-ca48670c8ca9", + "number": "2750010", + "shortname": "DÜSSELDORF", + "longname": "DÜSSELDORF", + "km": 744.2, + "agency": "WSA RHEIN", + "longitude": 6.769891254460825, + "latitude": 51.225498399959655, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "c0f51e35-d0e8-4318-afaf-c5fcbc29f4c1", + "number": "2770010", + "shortname": "DUISBURG-RUHRORT", + "longname": "DUISBURG-RUHRORT", + "km": 780.8, + "agency": "WSA RHEIN", + "longitude": 6.727926671815738, + "latitude": 51.455344914341104, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "f33c3cc9-dc4b-4b77-baa9-5a5f10704398", + "number": "2770040", + "shortname": "WESEL", + "longname": "WESEL", + "km": 814.0, + "agency": "WSA RHEIN", + "longitude": 6.606820258595952, + "latitude": 51.646142709344545, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "2f025389-fac8-4557-94d3-7d0428878c86", + "number": "2790010", + "shortname": "REES", + "longname": "REES", + "km": 837.4, + "agency": "WSA RHEIN", + "longitude": 6.395692160228798, + "latitude": 51.75695263686802, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "9598e4cb-0849-401e-bba0-689234b27644", + "number": "2790020", + "shortname": "EMMERICH", + "longname": "EMMERICH", + "km": 851.9, + "agency": "WSA RHEIN", + "longitude": 6.245594383748815, + "latitude": 51.82925156903814, + "water": { + "shortname": "RHEIN", + "longname": "RHEIN" + } + }, + { + "uuid": "f18e81da-1fec-4308-a881-6defa7c6d18b", + "number": "27700262", + "shortname": "DUISBURG-MEIDERICH SCHLEUSE OW", + "longname": "DUISBURG-MEIDERICH SCHLEUSE OW", + "km": 0.869, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.77596181066609, + "latitude": 51.451717552843974, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "48780245-36f2-453e-b430-5fa838851d6d", + "number": "27700273", + "shortname": "DUISBURG-MEIDERICH SCHLEUSE UW", + "longname": "DUISBURG-MEIDERICH SCHLEUSE UW", + "km": 1.1, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.779116363296888, + "latitude": 51.452370230354894, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "12f63015-c66a-4e89-a69b-ddd069872d40", + "number": "27700251", + "shortname": "OBERHAUSEN SCHLEUSE UW", + "longname": "OBERHAUSEN SCHLEUSE UW", + "km": 5.189, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.815456818151979, + "latitude": 51.478972077450344, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "e251f943-ce2f-4003-b208-e2797aa72202", + "number": "27700240", + "shortname": "OBERHAUSEN SCHLEUSE OW", + "longname": "OBERHAUSEN SCHLEUSE OW", + "km": 5.734, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.821446710191658, + "latitude": 51.48213666183001, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "427318d0-ee8d-4d9b-89f1-e8a8685b5d8c", + "number": "27700230", + "shortname": "GELSENKIRCHEN SCHLEUSE UW", + "longname": "GELSENKIRCHEN SCHLEUSE UW", + "km": 23.069, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.053884636912698, + "latitude": 51.52979233969689, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "5b9f8134-8bf0-4b51-a548-72a36303bbc2", + "number": "27700229", + "shortname": "GELSENKIRCHEN SCHLEUSE OW", + "longname": "GELSENKIRCHEN SCHLEUSE OW", + "km": 23.566, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.059887649239829, + "latitude": 51.53222779898015, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "23045f8b-e7e8-4534-8162-b7dba81764db", + "number": "27700218", + "shortname": "WANNE EICKEL SCHLEUSE UW", + "longname": "WANNE EICKEL SCHLEUSE UW", + "km": 30.907, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.158004187559419, + "latitude": 51.54724841104467, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "05ca0e33-5c71-4368-b824-2243fcff656c", + "number": "27700193", + "shortname": "WANNE EICKEL SCHLEUSE OW", + "longname": "WANNE EICKEL SCHLEUSE OW", + "km": 31.47, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.165993854149794, + "latitude": 51.54815974307825, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "b9975ea1-5b45-4e27-abb8-4c3f7878b1f7", + "number": "27700160", + "shortname": "HERNE UW", + "longname": "HERNE UW", + "km": 36.825, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.306141323485447, + "latitude": 51.60310157968186, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "ac6c4362-1fb1-4b7a-9406-016bed804804", + "number": "27700150", + "shortname": "HERNE OW", + "longname": "HERNE OW", + "km": 37.35, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.245823919191934, + "latitude": 51.564599683663246, + "water": { + "shortname": "RHK", + "longname": "RHEIN-HERNE-KANAL" + } + }, + { + "uuid": "4d00c13e-e689-4dfc-85e6-a3fc8596ac8b", + "number": "589000", + "shortname": "WOLFSBRUCH OP", + "longname": "WOLFSBRUCH OP", + "km": 2.284, + "agency": "WSA EBERSWALDE", + "longitude": 12.905341359658095, + "latitude": 53.18243330846866, + "water": { + "shortname": "RBG", + "longname": "RHEINSBERGER GEWÄSSER" + } + }, + { + "uuid": "3d43a8d7-e599-4fc4-bf62-65eb0794685e", + "number": "589010", + "shortname": "WOLFSBRUCH UP", + "longname": "WOLFSBRUCH UP", + "km": 2.468, + "agency": "WSA EBERSWALDE", + "longitude": 12.902643044770075, + "latitude": 53.18215725249415, + "water": { + "shortname": "RBG", + "longname": "RHEINSBERGER GEWÄSSER" + } + }, + { + "uuid": "4e4fac1a-6fb4-4ce2-a041-bdc4a668d95d", + "number": "3101016", + "shortname": "SCHLEUSE ROTHENSEE UP", + "longname": "SCHLEUSE ROTHENSEE UP", + "km": 1.3, + "agency": "WSA MAGDEBURG", + "longitude": 11.674396631007529, + "latitude": 52.22050915843653, + "water": { + "shortname": "RVK", + "longname": "ROTHENSEER-VERBINDUNGSKANAL" + } + }, + { + "uuid": "ea3e14ca-2872-47e7-a10c-8b2e0b46bdba", + "number": "13101016", + "shortname": "MAGDEBURG-RO NWS", + "longname": "MAGDEBURG-RO NWS", + "km": 4.15, + "agency": "WSA MAGDEBURG", + "longitude": 11.687266581469508, + "latitude": 52.19703677234943, + "water": { + "shortname": "RVK", + "longname": "ROTHENSEER-VERBINDUNGSKANAL" + } + }, + { + "uuid": "12a3037f-cbf3-49d3-8da5-77fb38730bba", + "number": "27600090", + "shortname": "RUHRWEHR OW", + "longname": "RUHRWEHR OW", + "km": 2.961, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.7574367229920265, + "latitude": 51.445922505872595, + "water": { + "shortname": "RUHR", + "longname": "RUHR" + } + }, + { + "uuid": "36fb2c81-5fc0-4f2c-8f37-347c822a4b59", + "number": "27600030", + "shortname": "SCHLOSSBRÜCKE MÜLHEIM", + "longname": "SCHLOSSBRÜCKE MÜLHEIM", + "km": 12.183, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.8759653038330795, + "latitude": 51.42676108172602, + "water": { + "shortname": "RUHR", + "longname": "RUHR" + } + }, + { + "uuid": "c0594fb5-77ff-4287-9b8d-7ff326afe9ff", + "number": "2769510000100", + "shortname": "Hattingen", + "longname": "HATTINGEN", + "km": 15.3, + "agency": "RUHRVERBAND", + "longitude": 7.161034055228365, + "latitude": 51.399749917827165, + "water": { + "shortname": "RUHR", + "longname": "RUHR" + } + }, + { + "uuid": "752a8c5a-5f2a-4575-af2f-d825cffc6eb3", + "number": "126010", + "shortname": "RUTHENSTROM-SPERRWERK", + "longname": "RUTHENSTROM-SPERRWERK", + "km": 3.64, + "agency": "WSA HAMBURG", + "longitude": 9.419406799690005, + "latitude": 53.71995967263287, + "water": { + "shortname": "Ruthenstrom", + "longname": "RUTHENSTROM" + } + }, + { + "uuid": "99989609-7bd8-4f91-bd55-ad31fbf55ee4", + "number": "586050", + "shortname": "WOLTERSDORF UP", + "longname": "WOLTERSDORF UP", + "km": 3.71, + "agency": "WSA BERLIN", + "longitude": 13.764181855832788, + "latitude": 52.4417703510018, + "water": { + "shortname": "RÜG", + "longname": "RÜDERSDORFER GEWÄSSER" + } + }, + { + "uuid": "2ae6cc12-5491-4f59-94c5-ccdbcb7474c8", + "number": "586040", + "shortname": "WOLTERSDORF OP", + "longname": "WOLTERSDORF OP", + "km": 3.89, + "agency": "WSA BERLIN", + "longitude": 13.764873755326386, + "latitude": 52.44332337371182, + "water": { + "shortname": "RÜG", + "longname": "RÜDERSDORFER GEWÄSSER" + } + }, + { + "uuid": "2203fce7-9d1e-4586-84ab-0797468863a1", + "number": "570950", + "shortname": "GROSS ROSENBURG", + "longname": "GROSS ROSENBURG", + "km": 9.64, + "agency": "WSA MAGDEBURG", + "longitude": 11.87400853914681, + "latitude": 51.91711420240949, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "8d1fdc5b-b63a-4745-baeb-5e266d247e99", + "number": "570940", + "shortname": "CALBE GRIZEHNE", + "longname": "CALBE GRIZEHNE", + "km": 17.43, + "agency": "WSA MAGDEBURG", + "longitude": 11.812213724371462, + "latitude": 51.91641172581023, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "46a3350b-f3e6-4f5d-a297-2652c43bfac8", + "number": "570930", + "shortname": "CALBE UP", + "longname": "CALBE UP", + "km": 19.67, + "agency": "WSA MAGDEBURG", + "longitude": 11.788818573156826, + "latitude": 51.90627916421889, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "184200bc-cdb6-4116-a7cf-ac986c2d4fb8", + "number": "570920", + "shortname": "CALBE OP", + "longname": "CALBE OP", + "km": 20.08, + "agency": "WSA MAGDEBURG", + "longitude": 11.78871221282285, + "latitude": 51.901075225348265, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "ace7d4b0-33e5-46db-a41d-2fa7a321f67a", + "number": "579100", + "shortname": "NIENBURG (Saale)", + "longname": "NIENBURG (SAALE)", + "km": 27.9, + "agency": "WSA MAGDEBURG", + "longitude": 11.772200902082998, + "latitude": 51.83918327033327, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "501aa608-ea81-4690-a491-6602114c14af", + "number": "570910", + "shortname": "BERNBURG UP", + "longname": "BERNBURG UP", + "km": 36.05, + "agency": "WSA MAGDEBURG", + "longitude": 11.735423010047713, + "latitude": 51.79679262113111, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "e7f52bd2-f0cb-4194-aa85-4ad76a3a0671", + "number": "570900", + "shortname": "BERNBURG OP", + "longname": "BERNBURG OP", + "km": 36.2, + "agency": "WSA MAGDEBURG", + "longitude": 11.733834123733041, + "latitude": 51.79584533283747, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "93ddc1e6-072c-45f6-99c0-d7d7df9d39cf", + "number": "570880", + "shortname": "ALSLEBEN UP", + "longname": "ALSLEBEN UP", + "km": 50.24, + "agency": "WSA MAGDEBURG", + "longitude": 11.677368657450529, + "latitude": 51.70755235353753, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "9fb9abce-e1ac-4c11-94b2-a32d63f6fb40", + "number": "570870", + "shortname": "ALSLEBEN OP", + "longname": "ALSLEBEN OP", + "km": 50.42, + "agency": "WSA MAGDEBURG", + "longitude": 11.679214205831705, + "latitude": 51.70638000482505, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "e70e39ec-e476-4991-a39d-7d0e009556ef", + "number": "570860", + "shortname": "ROTHENBURG UP", + "longname": "ROTHENBURG UP", + "km": 58.6, + "agency": "WSA MAGDEBURG", + "longitude": 11.75127552283289, + "latitude": 51.6552970714032, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "5a7e1d4a-53aa-4f9f-a59b-50e01b7260c7", + "number": "570850", + "shortname": "ROTHENBURG OP", + "longname": "ROTHENBURG OP", + "km": 58.78, + "agency": "WSA MAGDEBURG", + "longitude": 11.752179249840303, + "latitude": 51.65386092350868, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "af82bc24-a355-4247-9532-b305eb57e16f", + "number": "570840", + "shortname": "WETTIN UP", + "longname": "WETTIN UP", + "km": 70.3, + "agency": "WSA MAGDEBURG", + "longitude": 11.792977813073664, + "latitude": 51.58234220035164, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "632a133b-fcc2-467f-8f9c-1ec63144f8d6", + "number": "570830", + "shortname": "WETTIN OP", + "longname": "WETTIN OP", + "km": 70.47, + "agency": "WSA MAGDEBURG", + "longitude": 11.795328187012027, + "latitude": 51.58260697255818, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "33193e2b-1203-4681-a23d-f87b9fab4b60", + "number": "570810", + "shortname": "TROTHA UP", + "longname": "TROTHA UP", + "km": 89.15, + "agency": "WSA MAGDEBURG", + "longitude": 11.954553184220046, + "latitude": 51.51425200250667, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "ea6870dc-507e-4ec4-a38c-cd8a5e8b7025", + "number": "570800", + "shortname": "TROTHA OP", + "longname": "TROTHA OP", + "km": 89.22, + "agency": "WSA MAGDEBURG", + "longitude": 11.954885063267607, + "latitude": 51.51368588271419, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "4626f6bc-494b-4a51-8c10-b47a32e87790", + "number": "570710", + "shortname": "RÖPZIG", + "longname": "RÖPZIG", + "km": 101.9, + "agency": "WSA MAGDEBURG", + "longitude": 11.9446517980664, + "latitude": 51.435071393968045, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "cde0f9b6-6b13-4de9-adfe-cad1fe085e30", + "number": "570630", + "shortname": "RISCHMÜHLE UP", + "longname": "RISCHMÜHLE UP", + "km": 115.19, + "agency": "WSA MAGDEBURG", + "longitude": 12.003389052496246, + "latitude": 51.35059487814885, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "31dfddc7-80a5-45ff-907b-7bf2c1d825c5", + "number": "570620", + "shortname": "RISCHMÜHLE OP", + "longname": "RISCHMÜHLE OP", + "km": 115.26, + "agency": "WSA DRESDEN", + "longitude": 12.002255078537344, + "latitude": 51.35019942010869, + "water": { + "shortname": "SAALE", + "longname": "SAALE" + } + }, + { + "uuid": "fe72ee98-88e9-4d19-aba1-f97f61b7d4de", + "number": "26400550", + "shortname": "FREMERSDORF", + "longname": "FREMERSDORF", + "km": 48.5, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 6.648423933615776, + "latitude": 49.40893472937927, + "water": { + "shortname": "SAAR", + "longname": "SAAR" + } + }, + { + "uuid": "1cc71bb2-99e5-4479-8ae9-8375568ed22c", + "number": "26400400", + "shortname": "LISDORF UP", + "longname": "LISDORF UP", + "km": 65.88, + "agency": "WSA MOSEL-SAAR-LAHN", + "water": { + "shortname": "SAAR", + "longname": "SAAR" + } + }, + { + "uuid": "a9ca43e9-ef92-4f1c-ac02-a6c8ccad7b9f", + "number": "26400220", + "shortname": "SANKT ARNUAL", + "longname": "SANKT ARNUAL", + "km": 90.8, + "agency": "WSA MOSEL-SAAR-LAHN", + "longitude": 7.022664603929586, + "latitude": 49.214871513781404, + "water": { + "shortname": "SAAR", + "longname": "SAAR" + } + }, + { + "uuid": "eeaba884-d4c5-4a83-88fb-adcd79adbc50", + "number": "26400100", + "shortname": "HANWEILER", + "longname": "HANWEILER", + "km": 104.6, + "agency": "WSA MOSEL-SAAR-LAHN", + "water": { + "shortname": "SAAR", + "longname": "SAAR" + } + }, + { + "uuid": "aac1846d-a0ea-46f3-984d-b3938b0cb82d", + "number": "603110", + "shortname": "SCHWEDT SCHLEUSE AP", + "longname": "SCHWEDT SCHLEUSE AP", + "km": 0.466, + "agency": "WSA EBERSWALDE", + "longitude": 14.323415812176883, + "latitude": 53.07016753424558, + "water": { + "shortname": "SQF", + "longname": "SCHWEDTER QUERFAHRT" + } + }, + { + "uuid": "cc57198c-b40f-4c11-ad50-fceae4669a3e", + "number": "59000106", + "shortname": "SCHWINGE-SPERRWERK", + "longname": "SCHWINGE-SPERRWERK", + "km": 3.6, + "agency": "WSA HAMBURG", + "longitude": 9.514315636026312, + "latitude": 53.6248522984709, + "water": { + "shortname": "Schwinge", + "longname": "SCHWINGE" + } + }, + { + "uuid": "d89eb759-58c4-43f4-9fe4-e6a21af23f5c", + "number": "582750", + "shortname": "BERLIN-CHARLOTTENBURG UP", + "longname": "BERLIN-CHARLOTTENBURG UP", + "km": 6.24, + "agency": "WSA BERLIN", + "longitude": 13.282545354179138, + "latitude": 52.530036728491496, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "63a222c0-bd45-4af8-b9a7-27f9443a1936", + "number": "582740", + "shortname": "BERLIN-CHARLOTTENBURG OP", + "longname": "BERLIN-CHARLOTTENBURG OP", + "km": 6.44, + "agency": "WSA BERLIN", + "longitude": 13.292223567643292, + "latitude": 52.53142330680511, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "09e15cf6-f155-4b76-b92f-6c260839121c", + "number": "582730", + "shortname": "BERLIN-MÜHLENDAMM UP", + "longname": "BERLIN-MÜHLENDAMM UP", + "km": 17.7, + "agency": "WSA BERLIN", + "longitude": 13.408690239605303, + "latitude": 52.51489692313214, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "6dc4e4a0-2c10-4c27-a08f-a0ca0aa13df2", + "number": "582720", + "shortname": "BERLIN-MÜHLENDAMM OP", + "longname": "BERLIN-MÜHLENDAMM OP", + "km": 17.9, + "agency": "WSA BERLIN", + "longitude": 13.41146044987869, + "latitude": 52.51445948590114, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "47d3e815-c556-4e1b-93de-9fe07329fb00", + "number": "586290", + "shortname": "BERLIN-KÖPENICK", + "longname": "BERLIN-KÖPENICK", + "km": 35.02, + "agency": "WSA BERLIN", + "longitude": 13.573985900031895, + "latitude": 52.42968971242617, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "1b8ac909-8377-4887-ab70-748de2dd9775", + "number": "585930", + "shortname": "WERNSDORF UP", + "longname": "WERNSDORF UP", + "km": 47.46, + "agency": "WSA BERLIN", + "longitude": 13.707553959773323, + "latitude": 52.37262802883052, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "9d7cc90a-7380-4dbf-8641-3201dfcbc75d", + "number": "585920", + "shortname": "WERNSDORF OP", + "longname": "WERNSDORF OP", + "km": 47.74, + "agency": "WSA BERLIN", + "longitude": 13.711208442751907, + "latitude": 52.371176042641245, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "e7440532-8033-44d6-99b4-037a05da0c54", + "number": "582650", + "shortname": "FUERSTENWALDE UP", + "longname": "FUERSTENWALDE UP", + "km": 74.65, + "agency": "WSA BERLIN", + "longitude": 14.065136843229512, + "latitude": 52.35413194631881, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "53088d32-226a-49b7-962d-a5879c3aba29", + "number": "582640", + "shortname": "FUERSTENWALDE OP", + "longname": "FUERSTENWALDE OP", + "km": 74.75, + "agency": "WSA BERLIN", + "longitude": 14.066528485661564, + "latitude": 52.35425977962824, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "b2204ea2-eb50-439f-a64d-98062ea1d21f", + "number": "585950", + "shortname": "KERSDORF UP", + "longname": "KERSDORF UP", + "km": 89.66, + "agency": "WSA BERLIN", + "longitude": 14.239080616624546, + "latitude": 52.30510664095507, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "b577a043-b6b8-4db8-80e7-8abbb565c8c5", + "number": "585940", + "shortname": "KERSDORF OP", + "longname": "KERSDORF OP", + "km": 89.86, + "agency": "WSA BERLIN", + "longitude": 14.241757959032718, + "latitude": 52.304575647601936, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "df242a51-7ed5-4205-be60-47e0e1f46fad", + "number": "690050", + "shortname": "EISENHUETTENSTADT SCHL. OP", + "longname": "EISENHUETTENSTADT SCHL. OP", + "km": 127.18, + "agency": "WSA BERLIN", + "longitude": 14.652208747570233, + "latitude": 52.13216690713276, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "9c336515-b238-4a1a-947f-dabe47f4b502", + "number": "603020", + "shortname": "EISENHUETTENSTADT SCHL. UP", + "longname": "EISENHUETTENSTADT SCHL. UP", + "km": 127.55, + "agency": "WSA BERLIN", + "longitude": 14.656283445438236, + "latitude": 52.13213391592677, + "water": { + "shortname": "SOW", + "longname": "SPREE-ODER-WASSERSTRASSE" + } + }, + { + "uuid": "2d9f473e-f2b6-4f50-bb4d-96362230a976", + "number": "586360", + "shortname": "KUMMERSDORF UP", + "longname": "KUMMERSDORF UP", + "km": 10.21, + "agency": "WSA BERLIN", + "longitude": 13.864599735155117, + "latitude": 52.26877550909009, + "water": { + "shortname": "SKG", + "longname": "STORKOWER GEWAESSER" + } + }, + { + "uuid": "9e4adf71-ed15-453a-b50e-de03d2077e04", + "number": "586350", + "shortname": "KUMMERSDORF OP", + "longname": "KUMMERSDORF OP", + "km": 10.4, + "agency": "WSA BERLIN", + "longitude": 13.866129124898228, + "latitude": 52.26739716715828, + "water": { + "shortname": "SKG", + "longname": "STORKOWER GEWAESSER" + } + }, + { + "uuid": "b89b68fd-0d40-4941-9ee1-e4f7a56351a0", + "number": "586340", + "shortname": "STORKOW UP", + "longname": "STORKOW UP", + "km": 15.39, + "agency": "WSA BERLIN", + "longitude": 13.931063554931628, + "latitude": 52.25840445102645, + "water": { + "shortname": "SKG", + "longname": "STORKOWER GEWAESSER" + } + }, + { + "uuid": "4e6a3d17-1855-4458-b3fc-e71921a4da7b", + "number": "586330", + "shortname": "STORKOW OP", + "longname": "STORKOW OP", + "km": 15.56, + "agency": "WSA BERLIN", + "longitude": 13.93356398465315, + "latitude": 52.258570860419546, + "water": { + "shortname": "SKG", + "longname": "STORKOWER GEWAESSER" + } + }, + { + "uuid": "c1d6f464-f38a-4e38-9f74-4c5d22a42c88", + "number": "586320", + "shortname": "WENDISCH RIETZ UP", + "longname": "WENDISCH RIETZ UP", + "km": 22.71, + "agency": "WSA BERLIN", + "longitude": 14.002967143121301, + "latitude": 52.214285822086865, + "water": { + "shortname": "SKG", + "longname": "STORKOWER GEWAESSER" + } + }, + { + "uuid": "a9299f0c-9eb8-4369-a260-4be929e72736", + "number": "586310", + "shortname": "WENDISCH RIETZ OP", + "longname": "WENDISCH RIETZ OP", + "km": 22.77, + "agency": "WSA BERLIN", + "longitude": 14.004329993353952, + "latitude": 52.21418947995005, + "water": { + "shortname": "SKG", + "longname": "STORKOWER GEWAESSER" + } + }, + { + "uuid": "15859426-834c-429e-9c41-2e097b717b1d", + "number": "5970037", + "shortname": "GRÖNHUDE", + "longname": "GRÖNHUDE", + "km": 5.1, + "agency": "WSA HAMBURG", + "longitude": 9.690579345819973, + "latitude": 53.935698195873435, + "water": { + "shortname": "STÖR", + "longname": "STÖR" + } + }, + { + "uuid": "24c6a014-864b-4d53-bd05-0b49106f5412", + "number": "5970038", + "shortname": "BREITENBERG", + "longname": "BREITENBERG", + "km": 11.9, + "agency": "WSA HAMBURG", + "longitude": 9.632318956087092, + "latitude": 53.92767943205299, + "water": { + "shortname": "STÖR", + "longname": "STÖR" + } + }, + { + "uuid": "d863cbc3-5e5e-4095-855c-026f0850dd58", + "number": "5970042", + "shortname": "ITZEHOE HAFEN", + "longname": "ITZEHOE HAFEN", + "km": 24.88, + "agency": "WSA HAMBURG", + "longitude": 9.500604517047933, + "latitude": 53.9244589886425, + "water": { + "shortname": "STÖR", + "longname": "STÖR" + } + }, + { + "uuid": "e5b8e9f3-f0cc-4ad7-8707-577ee1b25b3e", + "number": "5970040", + "shortname": "STÖR-SPERRWERK BP", + "longname": "STÖR-SPERRWERK BP", + "km": 50.2, + "agency": "WSA HAMBURG", + "longitude": 9.401400447906958, + "latitude": 53.826148252925, + "water": { + "shortname": "STÖR", + "longname": "STÖR" + } + }, + { + "uuid": "69fb4730-4866-4838-9b18-2c0ee9dce80d", + "number": "596930", + "shortname": "BANZKOW UP", + "longname": "BANZKOW UP", + "km": 10.85, + "agency": "WSA LAUENBURG", + "longitude": 11.521818558105737, + "latitude": 53.52283645455303, + "water": { + "shortname": "STW", + "longname": "STÖR-WASSERSTRASSE" + } + }, + { + "uuid": "a9320108-ad58-41b8-b7b5-f52163a23927", + "number": "596920", + "shortname": "BANZKOW OP", + "longname": "BANZKOW OP", + "km": 11.0, + "agency": "WSA LAUENBURG", + "longitude": 11.520200870127512, + "latitude": 53.52375723541154, + "water": { + "shortname": "STW", + "longname": "STÖR-WASSERSTRASSE" + } + }, + { + "uuid": "680d5966-273f-4254-aabe-5d4e00e12a24", + "number": "596900", + "shortname": "SCHWERIN WERDERBRÜCKE", + "longname": "SCHWERIN WERDERBRÜCKE", + "km": 27.61, + "agency": "WSA LAUENBURG", + "longitude": 11.427451938837342, + "latitude": 53.646381163634075, + "water": { + "shortname": "STW", + "longname": "STÖR-WASSERSTRASSE" + } + }, + { + "uuid": "38414157-862e-428a-ae2c-77ff79871227", + "number": "587030", + "shortname": "KLEINMACHNOW UP", + "longname": "KLEINMACHNOW UP", + "km": 8.28, + "agency": "WSA BERLIN", + "longitude": 13.207976409937142, + "latitude": 52.39552927464592, + "water": { + "shortname": "TeK", + "longname": "TELTOWKANAL" + } + }, + { + "uuid": "bb23b276-2c1c-4cde-bc9c-9d90d5a04890", + "number": "587020", + "shortname": "KLEINMACHNOW OP", + "longname": "KLEINMACHNOW OP", + "km": 8.42, + "agency": "WSA BERLIN", + "longitude": 13.209949405789361, + "latitude": 52.39568883903297, + "water": { + "shortname": "TeK", + "longname": "TELTOWKANAL" + } + }, + { + "uuid": "4457a320-1f99-4352-8a43-ff24109d99ea", + "number": "581230", + "shortname": "KANNENBURG UP", + "longname": "KANNENBURG UP", + "km": 3.572, + "agency": "WSA EBERSWALDE", + "longitude": 13.391285105541657, + "latitude": 53.074459805567166, + "water": { + "shortname": "TlG", + "longname": "TEMPLINER GEWÄSSER" + } + }, + { + "uuid": "a869dd39-dcf7-46f2-b9bf-b210816109ac", + "number": "581220", + "shortname": "KANNENBURG OP", + "longname": "KANNENBURG OP", + "km": 3.631, + "agency": "WSA EBERSWALDE", + "longitude": 13.392110994875233, + "latitude": 53.07462088716688, + "water": { + "shortname": "TlG", + "longname": "TEMPLINER GEWÄSSER" + } + }, + { + "uuid": "5918b484-597f-4a1c-8262-0d0cbbb7986d", + "number": "581210", + "shortname": "TEMPLIN UP", + "longname": "TEMPLIN UP", + "km": 13.291, + "agency": "WSA EBERSWALDE", + "longitude": 13.49475244715308, + "latitude": 53.122253182102575, + "water": { + "shortname": "TlG", + "longname": "TEMPLINER GEWÄSSER" + } + }, + { + "uuid": "71357738-c8e2-4cb7-a41a-365659bb8d58", + "number": "581200", + "shortname": "TEMPLIN OP", + "longname": "TEMPLIN OP", + "km": 13.338, + "agency": "WSA EBERSWALDE", + "longitude": 13.495313970633909, + "latitude": 53.12250673689759, + "water": { + "shortname": "TlG", + "longname": "TEMPLINER GEWÄSSER" + } + }, + { + "uuid": "f4f9f7fb-eeff-46dc-9727-04d8aa56240a", + "number": "9620090", + "shortname": "LÜBECK-BAUHOF", + "longname": "LÜBECK-BAUHOF", + "km": 7.79, + "agency": "WSA OSTSEE", + "longitude": 10.703065068850526, + "latitude": 53.89300772042554, + "water": { + "shortname": "TRAVE", + "longname": "TRAVE" + } + }, + { + "uuid": "c7383149-1f77-430d-8bef-c5667be3846b", + "number": "9620085", + "shortname": "TRAVEMÜNDE", + "longname": "TRAVEMÜNDE", + "km": 26.2, + "agency": "WSA OSTSEE", + "longitude": 10.872181527429802, + "latitude": 53.958023682263274, + "water": { + "shortname": "TRAVE", + "longname": "TRAVE" + } + }, + { + "uuid": "795ce865-3ac4-43b8-88d5-049a34e4359e", + "number": "9520061", + "shortname": "FRIEDRICHSTADT TREENE", + "longname": "FRIEDRICHSTADT TREENE", + "km": 0.0, + "agency": "WSA TÖNNING", + "longitude": 9.083812848701692, + "latitude": 54.3736511770528, + "water": { + "shortname": "TREENE", + "longname": "TREENE" + } + }, + { + "uuid": "d2d025a2-e691-4986-b9c4-923e7f1a47c3", + "number": "580430", + "shortname": "KETZIN", + "longname": "KETZIN", + "km": 34.053, + "agency": "WSA BRANDENBURG", + "longitude": 12.856783971314364, + "latitude": 52.46315289163043, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "16d180c2-63aa-486b-8966-81a6041360bc", + "number": "580440", + "shortname": "BRANDENBURG OP", + "longname": "BRANDENBURG OP", + "km": 55.115, + "agency": "WSA BRANDENBURG", + "longitude": 12.580815991357884, + "latitude": 52.420872280876374, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "f8806fa4-cc2c-46e8-9b87-6231da0e3ddd", + "number": "580450", + "shortname": "BRANDENBURG UP", + "longname": "BRANDENBURG UP", + "km": 56.0, + "agency": "WSA BRANDENBURG", + "longitude": 12.568842775816783, + "latitude": 52.4236624710917, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "aa97c894-ed26-4fdd-945f-db9667979268", + "number": "587560", + "shortname": "PLAUE OP", + "longname": "PLAUE OP", + "km": 67.8, + "agency": "WSA BRANDENBURG", + "longitude": 12.393021643822584, + "latitude": 52.40270160030484, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "9829cab0-746b-4d10-9124-79ddda0a843e", + "number": "580600", + "shortname": "PLAUE UP", + "longname": "PLAUE UP", + "km": 68.0, + "agency": "WSA BRANDENBURG", + "longitude": 12.394772455274657, + "latitude": 52.40296536913737, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "2d1fa45a-8928-4ad0-b564-e74f7189681c", + "number": "580601", + "shortname": "TIECKOW", + "longname": "TIECKOW", + "km": 76.33, + "agency": "WSA BRANDENBURG", + "longitude": 12.44750345418973, + "latitude": 52.47272937492226, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "6c76e98e-44ca-4d25-91e7-b07c68577c5e", + "number": "580620", + "shortname": "BAHNITZ OP", + "longname": "BAHNITZ OP", + "km": 81.793, + "agency": "WSA BRANDENBURG", + "longitude": 12.41871181181939, + "latitude": 52.50135556362991, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "1ebd0f94-cc06-445c-8e73-43fe2b8c72dc", + "number": "580630", + "shortname": "BAHNITZ UP", + "longname": "BAHNITZ UP", + "km": 82.11, + "agency": "WSA BRANDENBURG", + "longitude": 12.415237248227585, + "latitude": 52.50076040293713, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "43ca90f5-3b4c-4b35-86ac-cab0fe1c2ce5", + "number": "580640", + "shortname": "RATHENOW OP", + "longname": "RATHENOW OP", + "km": 102.86, + "agency": "WSA BRANDENBURG", + "longitude": 12.313836584625664, + "latitude": 52.60049032623287, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "4de8a51c-4c6a-4334-92dd-0b1cbb8e0573", + "number": "580650", + "shortname": "RATHENOW UP", + "longname": "RATHENOW UP", + "km": 103.94, + "agency": "WSA BRANDENBURG", + "longitude": 12.321016014173523, + "latitude": 52.60744455099087, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "3af7d65c-c732-49e9-be05-fe3b5f88657c", + "number": "580520", + "shortname": "ALBERTSHEIM", + "longname": "ALBERTSHEIM", + "km": 109.83, + "agency": "WSA BRANDENBURG", + "longitude": 12.333710535124785, + "latitude": 52.655944940952594, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "5553e209-1b44-47f5-917d-2c6951ecc044", + "number": "580700", + "shortname": "GRÜTZ OP", + "longname": "GRÜTZ OP", + "km": 116.772, + "agency": "WSA BRANDENBURG", + "longitude": 12.259671114013504, + "latitude": 52.667154560583455, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "c62aa674-db07-4251-a50b-1676c11a9a25", + "number": "580710", + "shortname": "GRÜTZ UP", + "longname": "GRÜTZ UP", + "km": 117.238, + "agency": "WSA BRANDENBURG", + "longitude": 12.254617518803094, + "latitude": 52.6665475369242, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "fbb1c6c1-9fa9-4315-8e31-3499bf00bfef", + "number": "588321", + "shortname": "WARNAU POLDER", + "longname": "WARNAU POLDER", + "km": 127.5, + "agency": "WSA BRANDENBURG", + "longitude": 12.204582290982167, + "latitude": 52.74011859550903, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "f112a50a-d94a-49d3-a140-0a0402baf0d3", + "number": "580747", + "shortname": "GÜLPE OP", + "longname": "GÜLPE OP", + "km": 127.644, + "agency": "WSA BRANDENBURG", + "longitude": 12.221626379457208, + "latitude": 52.738530749126895, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "4c8282c1-c9c5-40c2-b379-95495ce0deee", + "number": "580750", + "shortname": "GARZ OP", + "longname": "GARZ OP", + "km": 128.845, + "agency": "WSA BRANDENBURG", + "longitude": 12.214896695499364, + "latitude": 52.74593877363236, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "914ce0a4-d900-4bf9-bace-47a6f73e7bed", + "number": "580760", + "shortname": "GARZ UP", + "longname": "GARZ UP", + "km": 129.18, + "agency": "WSA BRANDENBURG", + "longitude": 12.212688506558264, + "latitude": 52.74861165187199, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "ddb249c5-360b-4c4f-a7f6-1f6822d236c8", + "number": "580795", + "shortname": "TRUEBENGRABEN POLDER", + "longname": "TRUEBENGRABEN POLDER", + "km": 141.0, + "agency": "WSA BRANDENBURG", + "longitude": 12.097664449046205, + "latitude": 52.81757399701223, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "c203d5fb-96d7-4643-b2ef-b13b1d88c75b", + "number": "580790", + "shortname": "HAVELBERG STADT", + "longname": "HAVELBERG STADT", + "km": 145.261, + "agency": "WSA BRANDENBURG", + "longitude": 12.076562420207578, + "latitude": 52.823200656190885, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "ce086a21-29c2-444c-b53d-f3b70b086b2f", + "number": "580800", + "shortname": "HAVELBERG UP", + "longname": "HAVELBERG UP", + "km": 146.89, + "agency": "WSA BRANDENBURG", + "longitude": 12.057095253478064, + "latitude": 52.830993541010926, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "bb6fd2f0-458a-4ea5-aa58-e1c1a2fbd56d", + "number": "502475", + "shortname": "HAVELBERG EP", + "longname": "HAVELBERG EP", + "km": 147.305, + "agency": "WSA BRANDENBURG", + "longitude": 12.053033291476808, + "latitude": 52.83374515518998, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "863359dd-3171-4641-97bb-b21f06859072", + "number": "580820", + "shortname": "QUITZÖBEL OP", + "longname": "QUITZÖBEL OP", + "km": 156.105, + "agency": "WSA BRANDENBURG", + "longitude": 12.005424529549988, + "latitude": 52.88086151975453, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "2d93f2be-6d57-4716-a775-92fb5a63f88f", + "number": "580830", + "shortname": "QUITZÖBEL UP", + "longname": "QUITZÖBEL UP", + "km": 156.19, + "agency": "WSA BRANDENBURG", + "longitude": 12.004057959474165, + "latitude": 52.88077171503365, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "c13fc7d0-beb1-42a3-b831-4816d7649059", + "number": "502470", + "shortname": "NEUWERBEN EP", + "longname": "NEUWERBEN EP", + "km": 156.21, + "agency": "WSA BRANDENBURG", + "longitude": 12.008008464982804, + "latitude": 52.87735684452029, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "ab53a592-0f5a-43e2-9133-bf3169b0f274", + "number": "580840", + "shortname": "GNEVSDORF OP", + "longname": "GNEVSDORF OP", + "km": 165.45, + "agency": "WSA BRANDENBURG", + "longitude": 11.887245452450394, + "latitude": 52.907606334741466, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "3079c709-9d83-4c59-bf91-6bed2d5ea372", + "number": "503010", + "shortname": "GNEVSDORF EP", + "longname": "GNEVSDORF EP", + "km": 165.48, + "agency": "WSA BRANDENBURG", + "longitude": 11.88596992780831, + "latitude": 52.907993040390394, + "water": { + "shortname": "UHW", + "longname": "UNTERE HAVEL-WASSERSTRASSE" + } + }, + { + "uuid": "e0d0cc73-d3ef-41ff-a158-4692b62ed3f9", + "number": "603090", + "shortname": "HOHENSAATEN OST AP", + "longname": "HOHENSAATEN OST AP", + "km": 92.9, + "agency": "WSA EBERSWALDE", + "longitude": 14.150973236301567, + "latitude": 52.8744321175411, + "water": { + "shortname": "VKH", + "longname": "VERBINDUNGSKANAL HOHENSAATEN" + } + }, + { + "uuid": "ca0e4a68-bd50-494c-bd45-abb33c5e1b0a", + "number": "9640002", + "shortname": "ROSTOCK MÜHLENDAMM OW", + "longname": "ROSTOCK MÜHLENDAMM OW", + "km": 141.508, + "agency": "WSA OSTSEE", + "longitude": 12.154273180293071, + "latitude": 54.08243775768849, + "water": { + "shortname": "WARNOW", + "longname": "WARNOW" + } + }, + { + "uuid": "4a0061f0-7355-4a95-9c70-f05c8920d790", + "number": "9640018", + "shortname": "ROSTOCK MÜHLENDAMM UW", + "longname": "ROSTOCK MÜHLENDAMM UW", + "km": 141.596, + "agency": "WSA OSTSEE", + "longitude": 12.155108960721455, + "latitude": 54.08306426722394, + "water": { + "shortname": "WARNOW", + "longname": "WARNOW" + } + }, + { + "uuid": "23636a08-775b-4101-a1af-1b57fb466d81", + "number": "581400", + "shortname": "MARIENTHAL UP", + "longname": "MARIENTHAL UP", + "km": 0.085, + "agency": "WSA EBERSWALDE", + "longitude": 13.293599159940442, + "latitude": 53.05125394001951, + "water": { + "shortname": "WtG", + "longname": "WENTOW-GEWÄSSER" + } + }, + { + "uuid": "60b6ecb0-4ed5-4b8a-b875-07ae33a92b07", + "number": "581390", + "shortname": "MARIENTHAL OP", + "longname": "MARIENTHAL OP", + "km": 0.143, + "agency": "WSA EBERSWALDE", + "longitude": 13.292737415762769, + "latitude": 53.05136215770028, + "water": { + "shortname": "WtG", + "longname": "WENTOW-GEWÄSSER" + } + }, + { + "uuid": "42805eb1-aca9-4f32-a373-24a9cf839aed", + "number": "693320", + "shortname": "EICHHORST OP", + "longname": "EICHHORST OP", + "km": 8.7, + "agency": "WSA EBERSWALDE", + "longitude": 13.639019060487044, + "latitude": 52.89113754341671, + "water": { + "shortname": "WbG", + "longname": "WERBELLINER GEWÄSSER" + } + }, + { + "uuid": "5c4c2d52-6c0d-4aa2-beed-6ce47e3e2bd7", + "number": "693330", + "shortname": "EICHHORST UP", + "longname": "EICHHORST UP", + "km": 8.7, + "agency": "WSA EBERSWALDE", + "longitude": 13.638876374896926, + "latitude": 52.89142348093641, + "water": { + "shortname": "WbG", + "longname": "WERBELLINER GEWÄSSER" + } + }, + { + "uuid": "59219312-9e87-4b8c-8dde-325af733d282", + "number": "41900206", + "shortname": "LETZTER HELLER", + "longname": "LETZTER HELLER", + "km": 2.32, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.67808149274157, + "latitude": 51.41565074708677, + "water": { + "shortname": "WERRA", + "longname": "WERRA" + } + }, + { + "uuid": "5b58af00-6817-4214-b151-34830ac563cc", + "number": "41900104", + "shortname": "ALLENDORF", + "longname": "ALLENDORF", + "km": 40.79, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.966470842701384, + "latitude": 51.276766660357175, + "water": { + "shortname": "WERRA", + "longname": "WERRA" + } + }, + { + "uuid": "5c735fa8-270e-42c3-b22f-b27418db10cf", + "number": "41700105", + "shortname": "HELDRA", + "longname": "HELDRA", + "km": 77.32, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 10.196998244947785, + "latitude": 51.125008453132246, + "water": { + "shortname": "WERRA", + "longname": "WERRA" + } + }, + { + "uuid": "a98b4a84-e51f-4d03-86d9-3b8bdac10e69", + "number": "27800234", + "shortname": "FRIEDRICHSFELD SCHLEUSE UW", + "longname": "FRIEDRICHSFELD SCHLEUSE UW", + "km": 1.628, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.613936099614115, + "latitude": 51.62901680333525, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "e3409c98-72d7-425b-9e2d-da54f75b3be8", + "number": "27800223", + "shortname": "FRIEDRICHSFELD SCHLEUSE OW", + "longname": "FRIEDRICHSFELD SCHLEUSE OW", + "km": 2.295, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.623104637536298, + "latitude": 51.62723083066225, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "14699a51-aaa5-4ae4-98a6-d35aa9a80ec3", + "number": "27800212", + "shortname": "HÜNXE SCHLEUSE UW", + "longname": "HÜNXE SCHLEUSE UW", + "km": 12.875, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.769073944617867, + "latitude": 51.648298675964796, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "5c1b6183-eaaf-436c-b863-8a191d9e1f5a", + "number": "27800198", + "shortname": "HÜNXE SCHLEUSE OW", + "longname": "HÜNXE SCHLEUSE OW", + "km": 13.664, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.780465175416767, + "latitude": 51.64856876585283, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "5db8ab4b-315b-466e-b9d5-5ba5a19f5f08", + "number": "27800187", + "shortname": "DORSTEN SCHLEUSE UW", + "longname": "DORSTEN SCHLEUSE UW", + "km": 30.016, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 6.998495058397992, + "latitude": 51.66300127041309, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "6610cf2e-7bfd-4686-b9ac-b105f492d708", + "number": "27800176", + "shortname": "DORSTEN SCHLEUSE OW", + "longname": "DORSTEN SCHLEUSE OW", + "km": 30.863, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.0107317437101315, + "latitude": 51.66280340126995, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "a7ffcc9e-fecd-431c-8044-e004682d023f", + "number": "27800165", + "shortname": "FLAESHEIM SCHLEUSE UW", + "longname": "FLAESHEIM SCHLEUSE UW", + "km": 48.99, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.238068733431324, + "latitude": 51.72038172511063, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "f833a494-961b-42d3-9843-e4e61607b5be", + "number": "27800154", + "shortname": "FLAESHEIM SCHLEUSE OW", + "longname": "FLAESHEIM SCHLEUSE OW", + "km": 49.73, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.246876437752156, + "latitude": 51.71662005383251, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "7703d54d-ca33-44b9-b519-c618bae5bcc7", + "number": "27800143", + "shortname": "AHSEN SCHLEUSE UW", + "longname": "AHSEN SCHLEUSE UW", + "km": 55.924, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.321516930092939, + "latitude": 51.68901483082129, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "2813f196-3404-4ac2-92be-e288fe1607af", + "number": "27800132", + "shortname": "AHSEN SCHLEUSE OW", + "longname": "AHSEN SCHLEUSE OW", + "km": 56.278, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.325448955559613, + "latitude": 51.68697872241, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "06c498e3-786a-48be-83be-6a6293ea3b8c", + "number": "27800121", + "shortname": "DATTELN SCHLEUSE UW", + "longname": "DATTELN SCHLEUSE UW", + "km": 58.89, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.35366241265323, + "latitude": 51.67137827137802, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "4dd743e9-3040-4f11-8c7c-d5c5789d80b4", + "number": "27800110", + "shortname": "DATTELN SCHLEUSE OW", + "longname": "DATTELN SCHLEUSE OW", + "km": 60.11, + "agency": "WSA DUISBURG-MEIDERICH", + "longitude": 7.364979258746804, + "latitude": 51.66298760815798, + "water": { + "shortname": "WDK", + "longname": "WESEL-DATTELN-KANAL" + } + }, + { + "uuid": "e0d7d4b2-7a72-429f-a858-f1e6f5ff40ae", + "number": "9460041", + "shortname": "LT ALTE WESER (RADAR)", + "longname": "LT ALTE WESER (RADAR)", + "km": 0.0, + "agency": "WSA BREMERHAVEN", + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "b26bfc88-eb8a-45b9-9dd0-0e41949a2648", + "number": "4910050", + "shortname": "GROSSE WESERBRÜCKE", + "longname": "GROSSE WESERBRÜCKE", + "km": 0.04, + "agency": "WSA BREMEN", + "longitude": 8.803635790999683, + "latitude": 53.0730971373515, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "227e53ca-4dd9-482b-be62-52fdc62a4b4e", + "number": "43100109", + "shortname": "HANN.MUENDEN", + "longname": "HANN.MUENDEN", + "km": 0.65, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.640916558380352, + "latitude": 51.42578852661202, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "7e530482-0a13-4728-99db-a376304398b8", + "number": "4970035", + "shortname": "STROHAUSER PLATE OST", + "longname": "STROHAUSER PLATE OST", + "km": 1.0, + "agency": "WSA BREMERHAVEN", + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "c1f059dd-5063-468a-9dfa-0360fe0b030d", + "number": "4910060", + "shortname": "OSLEBSHAUSEN", + "longname": "OSLEBSHAUSEN", + "km": 8.367, + "agency": "WSA BREMEN", + "longitude": 8.712215483777378, + "latitude": 53.11979682274229, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "b8b8c069-0993-4a45-a226-a6c8c18185ab", + "number": "211431", + "shortname": "LEMWERDER UNTERFEUER", + "longname": "LEMWERDER UNTERFEUER", + "km": 17.5, + "agency": "WSA BREMEN", + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "3f3b4445-9a6a-44c3-8575-d86ce30e2de0", + "number": "4950010", + "shortname": "VEGESACK", + "longname": "VEGESACK", + "km": 17.843, + "agency": "WSA BREMEN", + "longitude": 8.619533310970207, + "latitude": 53.16940608661914, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "cca92e6d-e2c3-4c5f-be56-5b8682b353eb", + "number": "4950020", + "shortname": "FARGE", + "longname": "FARGE", + "km": 26.261, + "agency": "WSA BREMEN", + "longitude": 8.510192905492154, + "latitude": 53.20470884821241, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "eba772d4-509e-4fe7-ba51-d9a29b190432", + "number": "4970010", + "shortname": "ELSFLETH", + "longname": "ELSFLETH", + "km": 33.325, + "agency": "WSA BREMEN", + "longitude": 8.481417298527582, + "latitude": 53.26394602512631, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "314ef522-a060-4033-ba14-8169dd26bb8d", + "number": "43900105", + "shortname": "WAHMBECK", + "longname": "WAHMBECK", + "km": 35.97, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.519727677989398, + "latitude": 51.62561553063818, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "7febef93-09ce-49e9-9643-ecb3076ce9a7", + "number": "4970020", + "shortname": "BRAKE", + "longname": "BRAKE", + "km": 39.184, + "agency": "WSA BREMEN", + "longitude": 8.486684858411463, + "latitude": 53.315994540480546, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "1e51195c-f9d7-4cff-9db1-d92bb855005c", + "number": "45100100", + "shortname": "KARLSHAFEN", + "longname": "KARLSHAFEN", + "km": 45.52, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.438681427807628, + "latitude": 51.64798615737881, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "116572da-c036-4486-ac18-a92932424e30", + "number": "4970030", + "shortname": "RECHTENFLETH", + "longname": "RECHTENFLETH", + "km": 46.464, + "agency": "WSA BREMERHAVEN", + "longitude": 8.50055387349454, + "latitude": 53.38116187700329, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "06e6b715-eb03-46ce-adf4-6cafca6368eb", + "number": "4970040", + "shortname": "NORDENHAM", + "longname": "NORDENHAM", + "km": 55.811, + "agency": "WSA BREMERHAVEN", + "longitude": 8.4880524159755, + "latitude": 53.46449682647606, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "99dd338d-ef7d-43fd-a4e0-a9103406f0ad", + "number": "4970090", + "shortname": "BLEXEN ABZ", + "longname": "BLEXEN ABZ", + "km": 62.46, + "agency": "WSA BREMERHAVEN", + "longitude": 8.537411727150166, + "latitude": 53.51758034795676, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "d3f822a0-e201-4a61-8913-589c74818ae0", + "number": "4990010", + "shortname": "BHV ALTER LEUCHTTURM", + "longname": "BHV ALTER LEUCHTTURM", + "km": 66.638, + "agency": "WSA BREMERHAVEN", + "longitude": 8.568175032948227, + "latitude": 53.54495606650457, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "763633e7-3b4b-470a-978e-f9e456e4df7c", + "number": "45300109", + "shortname": "HÖXTER", + "longname": "HÖXTER", + "km": 69.62, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.400469961343804, + "latitude": 51.775800716750204, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "78029185-9dfc-4b1b-8695-45ebc2a09cf4", + "number": "9460010", + "shortname": "ROBBENSÜDSTEERT", + "longname": "ROBBENSÜDSTEERT", + "km": 79.942, + "agency": "WSA BREMERHAVEN", + "longitude": 8.445201625436724, + "latitude": 53.639223945927455, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "ad3b53f8-8c1b-439f-a0df-9f24827026d5", + "number": "9460020", + "shortname": "DWARSGAT", + "longname": "DWARSGAT", + "km": 92.656, + "agency": "WSA BREMERHAVEN", + "longitude": 8.307615531476777, + "latitude": 53.7186362869283, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "5310aed3-784c-4290-bfff-806c75b831d9", + "number": "45300200", + "shortname": "BODENWERDER", + "longname": "BODENWERDER", + "km": 110.72, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.515736239582566, + "latitude": 51.973727448144004, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "c6772c3c-a6bb-4728-9250-a408ab3856bd", + "number": "9460040", + "shortname": "LEUCHTTURM ALTE WESER", + "longname": "LEUCHTTURM ALTE WESER", + "km": 115.0, + "agency": "WSA BREMERHAVEN", + "longitude": 8.127571724139592, + "latitude": 53.863269435786876, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "fa886080-4271-4684-9999-1b6862a20ac1", + "number": "45700207", + "shortname": "HAMELN WEHRBERGEN", + "longname": "HAMELN WEHRBERGEN", + "km": 139.68, + "agency": "WSA HANNOVERSCH MÜNDEN", + "longitude": 9.306543742480654, + "latitude": 52.123730574492, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "005dfdae-efcc-410a-bf1c-24096e0c2866", + "number": "45900109", + "shortname": "RINTELN", + "longname": "RINTELN", + "km": 163.24, + "agency": "WSA MINDEN", + "longitude": 9.081704939644029, + "latitude": 52.18974744357511, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "2f56e265-cd67-4ea1-8529-549b6ccf273a", + "number": "45900208", + "shortname": "VLOTHO", + "longname": "VLOTHO", + "km": 184.01, + "agency": "WSA MINDEN", + "longitude": 8.862406875856845, + "latitude": 52.17639580614144, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "6b1b5c70-a23f-46de-954d-02bdc5bf2ecc", + "number": "47100100", + "shortname": "PORTA", + "longname": "PORTA", + "km": 198.36, + "agency": "WSA MINDEN", + "longitude": 8.922040753864895, + "latitude": 52.24870941928099, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "9aae4921-bda4-4081-b67b-2e0c5ab8bc54", + "number": "47300100", + "shortname": "PETERSHAGEN", + "longname": "PETERSHAGEN", + "km": 215.77, + "agency": "WSA VERDEN", + "longitude": 8.970777603262103, + "latitude": 52.38233838182189, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "edfa125a-1e46-4c7e-9f3a-568ae013a4df", + "number": "47500110", + "shortname": "STOLZENAU", + "longname": "STOLZENAU", + "km": 243.39, + "agency": "WSA VERDEN", + "longitude": 9.077734771251485, + "latitude": 52.51825035526719, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "3a24863b-fdec-455c-82da-ea8c7ae6f97a", + "number": "47500200", + "shortname": "LIEBENAU", + "longname": "LIEBENAU", + "km": 256.15, + "agency": "WSA VERDEN", + "longitude": 9.112771601163029, + "latitude": 52.59420627843106, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "38497786-6c29-47f4-93de-d96001629496", + "number": "47900118", + "shortname": "NIENBURG", + "longname": "NIENBURG", + "km": 268.18, + "agency": "WSA VERDEN", + "longitude": 9.204659197983005, + "latitude": 52.644153241028114, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "5b83cad2-ed64-42cf-87dd-98e27988c31a", + "number": "47900107", + "shortname": "DRAKENBURG", + "longname": "DRAKENBURG", + "km": 278.88, + "agency": "WSA VERDEN", + "longitude": 9.22558143834787, + "latitude": 52.693098974264636, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "86f66699-29b6-4b94-85cb-d241e832230a", + "number": "47900129", + "shortname": "HOYA", + "longname": "HOYA", + "km": 298.4, + "agency": "WSA VERDEN", + "longitude": 9.146923933365562, + "latitude": 52.8009841983805, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "e7c7cbaa-9a85-4033-be0f-b5bebcce0760", + "number": "47900209", + "shortname": "DÖRVERDEN", + "longname": "DÖRVERDEN", + "km": 308.95, + "agency": "WSA VERDEN", + "longitude": 9.210322075265587, + "latitude": 52.85227239521132, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "78d69798-f956-4222-8d2b-f9f630fb9e36", + "number": "49100101", + "shortname": "INTSCHEDE", + "longname": "INTSCHEDE", + "km": 331.28, + "agency": "WSA VERDEN", + "longitude": 9.125798805415808, + "latitude": 52.96416865044946, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "cbfdddd1-9e32-4de2-adca-7b32241c265d", + "number": "4910020", + "shortname": "DREYE", + "longname": "DREYE", + "km": 355.8, + "agency": "WSA BREMEN", + "longitude": 8.891252055365559, + "latitude": 53.01435881370665, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "c42ff4c7-f4c6-4568-8b5c-0b556bd55926", + "number": "4910030", + "shortname": "WESERWEHR OW", + "longname": "WESERWEHR OW", + "km": 361.8, + "agency": "WSA BREMEN", + "longitude": 8.869126735013456, + "latitude": 53.058582660435356, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "aeb9ed1c-6c01-4829-94e4-e530dbf79821", + "number": "4910040", + "shortname": "WESERWEHR UW", + "longname": "WESERWEHR UW", + "km": 362.79, + "agency": "WSA BREMEN", + "longitude": 8.854802691563382, + "latitude": 53.060246456258184, + "water": { + "shortname": "WESER", + "longname": "WESER" + } + }, + { + "uuid": "44bb934c-4250-4e1b-ad70-0fbd8bb3eadd", + "number": "603510", + "shortname": "GARTZ", + "longname": "GARTZ", + "km": 8.038, + "agency": "WSA EBERSWALDE", + "longitude": 14.394264747931327, + "latitude": 53.206332490898966, + "water": { + "shortname": "WOD", + "longname": "WESTODER" + } + }, + { + "uuid": "46e61953-4bdd-4045-a14e-a83948514c8a", + "number": "603520", + "shortname": "MESCHERIN", + "longname": "MESCHERIN", + "km": 14.102, + "agency": "WSA EBERSWALDE", + "longitude": 14.436439298629791, + "latitude": 53.25088316889866, + "water": { + "shortname": "WOD", + "longname": "WESTODER" + } + }, + { + "uuid": "5b94e4b9-cc96-433f-abf7-08287137ec54", + "number": "126009", + "shortname": "DORNBUSCH BRÜCKE", + "longname": "DORNBUSCH BRÜCKE", + "km": 3.7, + "agency": "WSA HAMBURG", + "longitude": 9.348016526795693, + "latitude": 53.73777573872999, + "water": { + "shortname": "Wischhafener Süderelbe", + "longname": "WISCHHAFENER SÜDERELBE" + } + }, + { + "uuid": "e0747660-6d75-476a-be0f-73865bf47363", + "number": "59000107", + "shortname": "WISCHHAFEN SPERRWERK", + "longname": "WISCHHAFEN SPERRWERK", + "km": 10.0, + "agency": "WSA HAMBURG", + "longitude": 9.340786122111078, + "latitude": 53.78517818926822, + "water": { + "shortname": "Wischhafener Süderelbe", + "longname": "WISCHHAFENER SÜDERELBE" + } + }, + { + "uuid": "aac49cf2-5d3f-4c69-9847-027fecaeef30", + "number": "4940010", + "shortname": "BORGFELD", + "longname": "BORGFELD", + "km": 0.265, + "agency": "WSA BREMEN", + "longitude": 8.89440346181682, + "latitude": 53.1339706601111, + "water": { + "shortname": "WÜMME", + "longname": "WÜMME" + } + }, + { + "uuid": "36e85829-2fb3-41a0-8a1b-aa9e76431b47", + "number": "4940020", + "shortname": "NIEDERBLOCKLAND", + "longname": "NIEDERBLOCKLAND", + "km": 7.992, + "agency": "WSA BREMEN", + "longitude": 8.826504838107983, + "latitude": 53.161504277715444, + "water": { + "shortname": "WÜMME", + "longname": "WÜMME" + } + } +] \ No newline at end of file diff --git a/bundles/pom.xml b/bundles/pom.xml index 026c4569ac08f..b0c818cc8440c 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -312,6 +312,7 @@ org.openhab.binding.orvibo org.openhab.binding.panasonicbdp org.openhab.binding.paradoxalarm + org.openhab.binding.pegelonline org.openhab.binding.pentair org.openhab.binding.phc org.openhab.binding.pilight