diff --git a/CODEOWNERS b/CODEOWNERS index 07394845a67..0496f7b8dff 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 a87a21c2000..95da35babef 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 00000000000..38d625e3492 --- /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 00000000000..b4a3cd0e864 --- /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 00000000000..d601402d38f Binary files /dev/null and b/bundles/org.openhab.binding.pegelonline/doc/Marburg.png differ diff --git a/bundles/org.openhab.binding.pegelonline/pom.xml b/bundles/org.openhab.binding.pegelonline/pom.xml new file mode 100644 index 00000000000..2d215310d58 --- /dev/null +++ b/bundles/org.openhab.binding.pegelonline/pom.xml @@ -0,0 +1,17 @@ + + + + 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 00000000000..1d8625edfb0 --- /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 00000000000..ef000e145c2 --- /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 00000000000..b6c4d6241ec --- /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 00000000000..db5dce90137 --- /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 00000000000..b68bf097ce0 --- /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 00000000000..d000aae72af --- /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 00000000000..d04eb90c1d0 --- /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 00000000000..131fcb93d59 --- /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 00000000000..bb4b1464790 --- /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 00000000000..99e4cc68967 --- /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 00000000000..ff23f71120d --- /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 00000000000..3096ed18667 --- /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 00000000000..f7e8cb3a92c --- /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 00000000000..8216e85341f --- /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 00000000000..7a007ff027a --- /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 00000000000..7888d754f8d --- /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 00000000000..cf2c8212573 --- /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 00000000000..0f26a8f4d67 --- /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 00000000000..f48c81a0600 --- /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 7ee8706eb66..b39cf3543e4 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