From cc5a3680a5a05f8d9b012ef74a3de6dcfa2f50b9 Mon Sep 17 00:00:00 2001 From: Bernd Weymann Date: Sat, 15 Jun 2024 19:38:55 +0200 Subject: [PATCH] [pegelonline] Initial contribution (#16831) * initial version Signed-off-by: Bernd Weymann Signed-off-by: Ciprian Pascu --- CODEOWNERS | 1 + bom/openhab-addons/pom.xml | 5 + .../org.openhab.binding.pegelonline/NOTICE | 13 + .../org.openhab.binding.pegelonline/README.md | 122 + .../doc/Marburg.png | Bin 0 -> 183677 bytes .../org.openhab.binding.pegelonline/pom.xml | 17 + .../src/main/feature/feature.xml | 9 + .../internal/PegelOnlineBindingConstants.java | 63 + .../internal/PegelOnlineHandlerFactory.java | 60 + .../config/PegelOnlineConfiguration.java | 81 + .../internal/discovery/PegelDiscovery.java | 122 + .../pegelonline/internal/dto/Measure.java | 26 + .../pegelonline/internal/dto/Station.java | 30 + .../pegelonline/internal/dto/Water.java | 23 + .../internal/handler/PegelOnlineHandler.java | 178 + .../pegelonline/internal/utils/Utils.java | 73 + .../src/main/resources/OH-INF/addon/addon.xml | 12 + .../OH-INF/i18n/pegelonline.properties | 58 + .../resources/OH-INF/thing/thing-types.xml | 94 + .../internal/handler/CallbackMock.java | 156 + .../internal/handler/PegelTest.java | 375 + .../pegelonline/internal/util/FileReader.java | 48 + .../src/test/resources/measure.json | 7 + .../src/test/resources/rivers.json | 100 + .../src/test/resources/stations.json | 9381 +++++++++++++++++ bundles/pom.xml | 1 + 26 files changed, 11055 insertions(+) create mode 100644 bundles/org.openhab.binding.pegelonline/NOTICE create mode 100644 bundles/org.openhab.binding.pegelonline/README.md create mode 100644 bundles/org.openhab.binding.pegelonline/doc/Marburg.png create mode 100644 bundles/org.openhab.binding.pegelonline/pom.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/feature/feature.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineBindingConstants.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/PegelOnlineHandlerFactory.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/config/PegelOnlineConfiguration.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/discovery/PegelDiscovery.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Measure.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Station.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/dto/Water.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/handler/PegelOnlineHandler.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/java/org/openhab/binding/pegelonline/internal/utils/Utils.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/addon/addon.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/i18n/pegelonline.properties create mode 100644 bundles/org.openhab.binding.pegelonline/src/main/resources/OH-INF/thing/thing-types.xml create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/CallbackMock.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/handler/PegelTest.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/java/org/openhab/binding/pegelonline/internal/util/FileReader.java create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/resources/measure.json create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/resources/rivers.json create mode 100644 bundles/org.openhab.binding.pegelonline/src/test/resources/stations.json diff --git a/CODEOWNERS b/CODEOWNERS index 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 0000000000000000000000000000000000000000..d601402d38f2304f6aeb5c7dc4910ef52a25de4f GIT binary patch literal 183677 zcmcG!V{~R+(=~dSL4wDJ2LJ#_ac^^$5EEa#3day8h#k*W;V(T{}3R9e=^@YiW6$`*JlsTU}XM%0^BO zo7m^T%k0QYh#Wq&=g146Hj7uSR$-jqq+1gP3ej<{uC_=0nHCc=v{%NXC0K6-9zDGG zuQlx8N0s}gs}31vF(V0BwK<>?Bh@t_X@AcA@C>L3ga!wjNdCtsA#(WL!?C-=Wyjq@ zASD&pnJn%pBBzL+mpd<`^@OasWvI(zM79bo<>=ABo_)4n-i62!GQ0fT zc#6$&qu2>wDi@%*@DQQtApZlG5c$Mr_9XnA`mt?5bRBItgUfxZg_FGgOMGvxmYzpD z`QNYzGmuo0U$k@tz}EoATHzFXjWP; zw)eH~-vO8`ZaaRDzs3dzIXl6(oKeoxU#w`A+wKo30o!D3k!t%4p$@R zz<2)OWhEa~au_}IaNq)LbW3T2PcpG)Cq!lw!-K!Bc@P7-@vTq%n=(Ecs~!^HwdoC06jgybG+%W3q#)+r+YbN)<0>%Ga1D z{W_g*=kNMJ=l>~|Y@UBYYi-5$LK}1%jluKk*}ixX|C6CuDi#clM8M663OiSotXsoP zK_L-UYJ89w*02U$N+p#~At#@N2lg}5+(A`bDNOwB0zxHOI4_>u<=-Nl{UNWQux0Pg ziW_pfXvN9L$0uEcrpC^}(NtfL%HLR72@i&f4)*$RA=8jzE4a=}tq|Yd7y)S>#xk3k zx9y2TkY+9lgzm^Z{GV##bKv!PuHU&XYojz^PS>ge%F9oVkF#dY#Ky+XWdeafl|a-` zUKCtb(Wp}6wuSzux zzWD!>MR0r+HFWwp>lO=3OM+PG_BnpMwhbhRL+Yghr7{Lu+Wc?w-07ULlXH`5YAcD2 zVy>r-KWH&2w|W2g8_$P~j!M(H(P-56{<#0@Mj8t0BY7SxR6N$`dX*XaI$^@CeSgb6 z!9HRyt1SRsdG_s{Bva!2x9sUmS8EMsW@d!*P}H2q6UaVZAFAr=9IUN_N*Ng$t1Bz{ zz3#0H42X(N)YKM+BQZ*>;EBJUf4j?M=5v896>CkUQ00IPQ|d)xMAp0VVit^byLQJQ zre3VF)BSJJ>D6ysssyr%3M1pP=C`(D-zL)1(a8aUKqaLxmRS8LHgv!Qty1dPlvMix z<18qeRMLqe>#WpO$Y59S@3FcAiD~JtH>2C=A00uCe?Rncl{=jW3M62{XWwo#ht|dh zy1+^}?!t@|uaAwX|6P1#UFFNxeLEzukllt3W@cutt}Tma#d1H=r!cIM^+j8Stk zGBU8ELrv+{oU1)SrO0RFi<`H2qyf4GoK!t>%m#x&pXaN6*daUqomeY1d7p-;qcM23 zvL+i8XYBr_CZaPoA_13)B9VrL6w#z9HJ@lMvdUir=NP8#7*#sFbSqleuQF9O>(lXq zgM;eE^PxAvGM|*xy|JMO|88d2m zG0Cv0Cw`(vCq~QLfNUGv%pXaZV6VIH+T6F%YTHdK+gr2By*@0=U!sKkw{&{+Fg>>l zzC=TOPCQD?FEc9-yd8QI2bS;X;EtC9L9Fy53T{Z+4qgOGefn?rnmY6K zlOE<4<7~L!sUkq0!UR?tozWI_NehI?mPheHm!djcItLgh|CUNNrlP)FXUx1GW>PG0 zR7|Xk5}%vpOMc$tDFzN+oBfi{5F^so|BU9kl}{aZMC#||UYTKCh|^nGIMm+cRGFm= z`Pxg-o?m`UkHpJSmTUcW z%l7MrCf>B~pnKkP+TTa?;l2{aFC1738TCxGtGG5lvhJ=Bshxy)TDHjl?x;%eYKA%a z{2t{Ym%NyR{sTPmki_3O3%a}YZv|J&y)XQk+YO%Y()x^2DLVe8#8D~CvUSNoU{Dsp z-I01}{*neyt=}cJlgEFPvA1usg53Y)FMClcsA1w@EM6h^1X9!CMH z^Kq(lcDeZYapT%p4^HZ@QF}X^ptq!wx_UBZ*8g@s7TT%q8q$9n30ici{Ibw2EfT>0 zRZvG>q427I0TL=*?_K{_S{?a|r=I>n(c}Fj-@x}T3?m0arpKpmKzY^wedB#))Klcb zHL;WRuh{L~6W3Dz_jAwx!~1`GiSR}5_Wx?*|G(yZzkcw+6;twu{hvYpzk{JlB&dN7 zN%oH8b0@nSD1|{u@^3y}($3G%OG~MDZa zt{7*oBCtpZJKRE4tCr6}{Mm3Vx;67wj?n+rUp|zzRy#dX)cQ5sIcpXEB%5D>&OvUV zt}VAN-{-%3|8ax-zl?f~c3t;oWoEAT`G0M0>Q7X(X=rKX@;VJ3InU$@5v=qobX=dR z|KI6wA>Ie^CreSj$puK-a_iaIG3mT9A90Lia@kO-*X{mG#jIz<)Db&=tVNSfV;-a| zq})WEtXr-#B|2QVQ;0-C97;%pBq}fS5eK;3L^4{+f1&SXv+Fbae@`|0H8A-gfZ`7F z@!aJ-EXLf6Da1_d!Tvw&z{Lyd7tib*n_GE>_*=Y;`|evQczlg5yehZw;U$rYYM)IP zYaMABr374>)8l(EQhaNvtBiEZqfB0?CupD{^?G&K-P32LaC$YEGD3klIYMb zH-;{F4y!Pgk*gogz=z9zsr~fJGdJ1f5z^Xl#S^6!TJY>?kcoK4EDU0Q>&*K?{_6G` zs!aCu*mdM3oaGDMA+dJyGO+ir8gppHRa2WLu4}8Ty^+-XXt;eHqH2MWpS&Q*L?L0S zsI5_I)zMJv<`{jCOB4rX32P)TvuwFZz!dKBEUv$PDh0WYA0M$1@tLi&3&I9y*IsXI ziF6$(F^BlVxc~F1yblh)}Y1{75an^J`1AHpfuc`a>s9+_Uk{hBbN3 ztqL3YU0q6>PHbFV-k4&<|Kn9t?L7+Ti*n_Yi$#m=3-U~XPWDV4P||wA9#DT~W^JrS zT)3(51j{F2&<)i&R*BQg)Vcjsc8Yu6tUzr3^?r;dEcj1bXGHNHsNz|~K_S3LwOqMu zot&H`je`}(g3oU9oS;e(ZjOZi#|n;{8!E|;?mz}fIPY=!tV^Kc^BL&}NQMl*@T2x` zmIz%~<}5+&%Oh8UP>G#&lH>%}s;s*&F?#A02J~^{mvrhr7t1yyU0nr_%*e_ZP=H;_B9UWOYd@R9yIf$kK%bIxF4r zEdHLdn3r=rE|JVV)tGha^Yc|&stSIhJ}}&k_PqxB@gU=9_R^GPYh2E6L}5rb_3Ru- zO|;Qa{zemKHe;)Uo_y-{Nxqji?RrbvI&da%jnBfN<~c*RGvS^H&CdV5hSlXmph-NG zT-p&@v4DGHv+Bw#O_(DY2R}!gMfa5={MS~tob0DVB!A3DlJg1M>G8jt!AH~IYjNv z!l+$k$)u4sePm})0X^<}?>!A2iiYI8iIhomHDnPmQJSXZPs(^+ttPrU!wg%oV z9+EAS_z^3K=9yA_xNlO?az-nckJfuOFIj0hsEv;P2j&&=*i6SDTx zdz0aUQ^1pxcc!S2=UbiQ=ZrBBOjZ(H5D~}b*Vs8~uQYRVcNo+f7Y%KkI<749q>$8Y z8u-*Np8%Cw){~f+`}(>IS57V%k6a>z3A3^vhj3)ESq;b^I-G*&-d?rIHCf~fti*lR zG;~Px@5K3B5_hsGQn@b;Uo`p7W;%w4jImg@rNM7DSR(3Hsk{bikYIdCde&Qn1B1l`bWhx%Rf!pET*PwuH`CW1}{4Y&5+Nt z$CSXul+j22{pG_LgUuEa@=o-1>V5#27VjVe7%E~Q8Wb9ufjli*VuXt3b-8WGu?AkV zMO)SPoxO9GUjE0M*8Qj6-w&UbdOKg&D{VVF?e-s~MPpHyZos6iKMybrl^4H~KB$%9 zeEAlUbWoS&*cXhI%glaUma-QSxhVg>S3W9bFSzN{I!6JV}(D{yOUd2d*_IIKE@pGYs&0bBYZ{v492Nc`R0 zl(|#-1QXT3nV99tsBbUN3FpiT3ps-1`k$6?7SD2M_Pmq&7gsv+oRx;Q{_n42o3Ifg z#}FKFQe1F_d48xZQO}m9dQyi^ssoljkKae>d-|Xm9_g)m$x`!GV!BVc7c|*O+FVU zvRp+rbMHBy+O*QyndB(uOzWTnO2^j~?Auwh4|B-sB&8L5m0l zgjL{0*C#o4wy!n&E5w_>*EpMf5cWMBK?5y<%nT@rpT`HoEKRLYr%kco=qQ}6LLrn3 z_xJh(|LKU7q73{einA$>X6Rd3NmtX7O>()Z8Ca(FL2m?l-5)N~yv6}oaeu`DkP^m{ zVv>^S=;r~(q_}Y5uKX>_ruBM?a@;OaTS;lQKwtw671f4qn%R#xql>ol2ftrE*w5}x zHVqq>4<6afZ5Q`d6T*eRmdp!BMi4zaI}Y$fLs1KG-VS|3XQ3$V?z0F^eS0CN)VZ0` zVJLnury64X;bt33h+5lj3J3OS{`vE_RyK~Wz-K`?WBp4-%SnI^ug?HYwtgHR zbYD*vugAdMA5Tr1=Js~PGXF$c;L(4yTVOm`@A6C+;lxN z=1fXcR42Rrx9QZ>MCWL@TKFs~_YV(Up}q^o7Ks3w>Ok4IhfSbi&mOnjsjV(^s-*_W z6oS{GK~$%n*DdwltxrR?N4TV>^K{syUBh3&IeU#pgP!p=W%Z3_4BmwF?%}N>LQ%u4 zoyP~FhUTL-+#-$xRUqLOa!(atzD>%g?~^;J+Zj)uMgDkx(igL_`49EHy8N$EfqxFC zF8I$Y_nSta#wk9EL^))h5&f0-QpOWS>ZEXs$*vDANa1lyE4+~DM&+&u%QNDx5`QI& z-Xb{Ewkemcu^xLF7`=_ko#BP^R+rD=;Q|NW1(WAVOPu2t!>@r#U2R+YS=@eYZ2XMr zL`0a;SBBfvHdf)dBUQ=sH}oU@G~mO^r5NhzavLAxZy0ighwcR4tT*cfg+Xx6^nNa+ zVcpGA>tHfBeg)2R4eF<(C0i~5)$!j8lJoC7MQiI?hx>eyQe9-mi$HcRbCY|DBeN>x z`&NbTmBEJ$TfL?_AIbAnEKx*3ooKu6S-*v4VonS3&e+1v4LYLzaKP5JCU+8ky_c}t z>dEK%eo)*y2Vn-}s;z6`v+YAm{)d}mxdwvUM#fu{rc+83v~Q`su#BFdIC<6|T!w9B zrM(T+mDWS8270ajEv{qQMps)+*K>gfW60bZ#Ej)rd8_xyKjQNAFjBF#t!tY%9MqCfX+C^uamagABJwDXY8gYD&WI$+A zH{}Sc>b`Z6J9C!=`RUgNozfau(z+vJnPg}%E=I0}Y7|caY|DtxICf&(z<&488quH9 z1N1z$YmaCl>W>cD>h3=6)&Jz?&!4?XvdsQ7BRP2&qk@Ib*|uWklF8DQfU%E+(v5Q;s=Zygk#ON3u_ z`DzuU{eMYjcLi0Fefbw>_`(yk+s3bflh^u_Mq_dz_sHZs?Rt^TECbhmqb2{$xUx_3 zyEJU_tCr?;pnH^@PD_SJiAGPsj3A{khf~$~#`dg}C{eM5rI`ewEU06_?80Hhe z<#i;T1pN{W`p>N z1}XSwy?Tfn2KQJuHR-Xscfs9n+3{noTQaNvmav-Q+d+bZ#g8qnuSc<_lpfCOapEJ* z%ED&^;+-`KAW1d5q8WTE!m}0|MTCavPO#e)06#!@5a3HiN4ZB$D)vrMGAc~j(I0!ds%l8Irtu7hXjdQF&Bu^OsL zl+51|8OofGwlNy5RrZ` zWvvqNb(_4O4i1#Q@DC_nNme+7%5kvjwIz%|rbrU%rWzx4Aj0V93UP0Yr=;MGBZ6>` zlHt?j3C?3731?HlUbx{pIE_mIe?t-W={XcF*>}ZxrvmpPl2SGT&^;!uU|Fb9ch)G( zWJBNy&k~BzCz-wzR77f7gbjvE)ePE+>q|H9&yZ6N1~fNwvbnJY0v=z%g&jz1Pwlvq z4adTJXPL8=;zjz`QF0lQl4f|51x`3!R$_o!buUh22NO9-5aoIdogd%B%}=u3tc|+p zxLilLCrZsXqL!AH!ZBVzu+fdCUFLh)7IT_!KEkKa@naNmh@B<@SaB*S&o(1QER;A% zm-%h2-=gMLS63aXD_-VK%*?c%M8Wbm!o&zwO?S}`rEm&4bdI9I)2Bi?2oLflDHTx8 zXlr-Q5O{sZY2*Qxhj=dq`ebdGP+H>L(W)EyZ%GI$!fj(`k9LC8K5iQP!a{?y%QI?$ zs7hsb!C&?tyL}|exFpZ-(ed;O^x#0l7g#Q-><1bAb8ZFZSmL#+%kn!&dT{9v+_I+9 z%JZW2^;lZv;!XM>o4sD+5uIL{O<_p91SIDzGD<|z3^~y=72F`TqJDGa=QRQZHOQMN z`F;Iz0Ngh^q9s^T7I;9gqpwaIqwxf;*&p3bf4)4Ok~@GMYb(u9eJB zDs3kX+#171$64yXpn~8zho{34K9SSN%$P>g^>2|RwY8~?=o`d-rcdA# z(|k0>IkmLl0M{NzNo_foH4n~u-J1GAA|h%`6k^WgCftN_ioGIi#GLE=O!7(~R_|m#KyLodGP~>f+xi*{oKGUg%|7CUrrbB!w~_)D zbc*o+LUd?)cs6bq$|^+mu(9s}RsHZg?EoRDv){I@hll3jO)qgWehqhX%o7sD{q>M1 z>^sTkm$2qoZHsj~mqEsiOuh@3wSV8LB*^M~a3JBhM72CrKf%sJmuP$@hywRywJO=O z>BvO^B?w(Hyrr->{gP?l%HZIj4GbMLZET>34C^5FQqM?hv)Ka>ph#JMf=wS1z;qnM zV3s$K!F%Q)s?cav&0BEb-P<_~cnSW2PYQM6E?6#CH7e(tnC0s`jm^Z|?z!u2(O1sZ zoX+Agy?m9QAaAt$@Z*)op5+6Bqk{$Ss0&374pLNBZriw=Q*;zlM)aKD+*C|rz=h46 z!3ab21nu;0oSzGaYsOV!Sz@6W66Qqb3 zT4XDLl%vs1pa4C?SC7pq)~%}g9XJ&9Un)4-H7ON34gGfbS?7(2snkDl9PG+xyN{~C zLjSzo$LAcSc=J6+-m=i)zNs9im(7l#`l~o?^jW*>=V)FW=9^+n=}dBeXCz=Wgp-9n za<=igzU0~LS+-8o7^7c-om$sp3yqr*UzKQMq^;%MHaky`v_!^+R`GW8E7xt5QhIt# zuUs>P=Zg2n5L@!G-HJSqik zE&H;?NDi;>a+)C$)-40(_!=tp)deO71|NEMg=GEI(rD;Cygj?%#-ftEg)%a>pvx2` zUi3H+KU8QH1n%KIT(N{_DL@4d#Kgyn2!d;D`PbyIa$K;j&oI_hR5b-}r6fw9NNo?DG1~GX)z*0tduUb`eZ!85u_=gu& zob|z=Y^$l>Sb7w=smQeJ1oYQ;>N78~1O#$Yb(h}*wgg0tJ3>rKMn%($iuXlL)Ic5N zu;~|7`}=wcB!s$l#?wDV;)y>__J*`Ev1%eD1-+lPn;mwNL<4&AVk08rK!EQ7wQ);_ zw!53ex0>KM8p*e=d&x3&tC@;yQ(i#@tWl`$jB9+BVBKo74qmm?p$=QGy!VGuQkUDQ zA*lNI<>uIt2u=I50xNQ(GB{$4lY!cdDIglPpXA{tSNbY$S&>a?Le0YTPu8n_Ow(Cu zbZY?2?d&avCvNl+~IPLa3= zdC}}-$}&vYx!8*~`ZSxJ?L0YuSFsi#At7UDEI6`e5@b%B3P|;Ib#+I6SkXd*&X)$% zF<~cDQgqzjB-`F(fe#mZ3D3O-qWCc2s3g4VlZO!;NhPO~7jEDn0A{XvBzYOBVK^N7 zcWZNMIkK)Hd1m=t1(vP7s|4igM&qCieOP!B7L8ZdgHD=)x$+>CVFyS-Y^QL%Es@jI1 zRyu1@T2E-3_~+m}O62J9=;x^YX!Y!|+g&NuupI!*M4zb?&*2~e`XKUADHP}&O-*HO z4Z*OYju(zD-|89e6>B29CSb#c<%TT|6^&75lJgJe+xy~TCu;St+uO37SqWLmYEHOs zbiO|mOS3)ROl5Gh(G=}*VIdrY3%@GBl=Yx{u;bC4s|JBZutJ6+QOQiSk5s5@*^7wu zRH(2GP%qhciH7BJWd7U1@dn6J&-aQc;f{dN1mnewf}uZGn@tJaFz8AoXKd9$!w z;kemzlIZWT0iObyVCZ)e*+#XW?Vv3on^cKhq6XVm%%aB@nlzSgFMq}59TpZ)(juXi z+EBf%sgd)e5TPNKDEW=Y5%7~jGVi0R*ybc4Jmz(xVnq65su07#Vu4u~1j09Odf$yG zVT0T4f;rQXWS$36)5X(Cy(7qVFjXu7&H3y)*%JU-03s;supF`@xIAb!-MGwmnNheueK zZq1?=z^BO6dS98>P)&F&Y)IMT|-1CR5#7-q`XfNB@tB88uZl({9+;JgZB3eWmbt{ zyLe-318CjjQTY>4E-BV-li7}=>L(mRr)toU{?T-$^d1*@=H93}={|*_ACw#+*Obom z6++jy4zvmV7KkgQe}p7Gf`}JKrxKQ#T?-3VeBdmYAm1w~` zY)S?%CkJ5YP~nGz3op2|c9a|xPHjIyXe4`~gM}u-tlm3k27`QGL+JP*r6#xHq0nhH?ky*E_44K^Z>0Iavpj^#vxe>;e1FNZ{c^_Vh5mpdH$u z1$0L%K>|TV>=l!feOQ>A%G%ef%Ig6+DYW^=G-aiWB{76AAwvzlwO35vMocZRAUU7{ z@U%m8TKBV6RLGqwSv}sIJ71;X3E{){4Wm=Iz|I1ANnv-l*I$ped+watb^Dg0^kU?;8&Xm~(t<{aU{F3u zQLPlqSz$Xtv^rShT5tohr}+Z=F&)4Zh-R>oIXGGpuX)rFDQDF6^lmR0bg@8+Uvrv= zx9@K(J74$C>`zJg`E*F93gVTctzb(*LEbX4x)da_u_VK(WP`L2<72-Y9C)}s+FBlJ zQc^HA_`S`RtR!{jcbTb}ixjPY*IT-FYW#F^_b{En7OR>XAMZzj#7ED}n=lv8gsUQ; zlF*FQGe#2M)G_EK64grjc_?ldIW3Azx~5Eon#5hjMz?0m`nZQqqEt8k<0iReqvv|~ z!{6ZT!#mISPiQ{(P=pTyPF%ClHe%_ z3=>h*9l+j{B?5>Ki^MDMIKDc zTVzC2rAWHV>jnDZbQ6zE_^c{1)ENkoeh^@Cy`A-V^&w37V?OM*{@bV;>kBQTkJaB@ zk;9`cEv-jVaMG6B+p)xUAJxO~X+=#d4U?+Lyef1Y@CF}p03}+&aslEX1v#nIU}5x} z3SoxW2}2Y=418pgR1oc<46&#Ar9dpR^2KFa-jXt!ng-Nb!H=lZxbR|%gyL1p2^pnX zCMT+lG;Slj0OTSzm=m#Jdlbm*k&(VKXHhXQufG7+rPaCu_$VN~MA1AI4b7r7STXGU zIW74DT*P&aT4u`K=g0Lh9uk}-JRJ^~RG?U`iZ~uLG-S~qu=d?3)apZT>%e@C1C+7+ zrZq($j?5;c_sA74{;wYUsoWx(bE4WP>#`^|03|O@4Pqo@aC-^4o&W{UsZJsqOFvYWf9}li6oA@gAvP6?YaHwv+T~G{+B_ zpL?MI)Wm>d0HR{JbYQ-sLKiQEnZ5P7;(b}k7_qS5J6ilnIS33*hdBX6DidE;+;}@N zI_hf8#Vj;wpZ7D#84nrPm@7j%bB4mC-=rmORO~n<1%ZRTHzU>6)8e?zszy$CokvaG zN#C?BzHM#v8)H#{rqxmSs$LL+nB80kVvrVAYx!^Q(75`^5sipykzxS(cv(5+nt3VW z9jw&S1DPvO#ZjIGB4Xg+2LcQ1U3iPq8IA7|A95$T0W6e&%}VuxnQaI!6VKnaRqc*V z=AX%2>b9AQN1vJluuYG!Ek<+g#S$B+1>gBWzd>f@{YOLQ^eKf>VrfZ9NprXhi)H&t z1o*89lELsHV9cfk>~xWZaayPflh#B*Cm6#}&Ju;3U{aDU)<$038@$;$N{=6iA*#>; zsZq_oj2-18YVlw|%`d^(pP+S4&aMR zN=hi#l$Q8D?{@5XSA3pdx~~2I&I(-nJnw~b5)AR-@KuPMA?n6aB(i<+*lxv)Z;o-> zn;2gAw$ZtjD4m#3ds|1V6>PV39v+TD^x8*E*&L53yKp2vZFYL6N$9gm*W|RhZ?T(P zt^*@?!u20P0~nY|Oc3cSR}pm827>aSFY}d7@8Nv7pUt3a`Mni#woU!LAHpTuX5~hf z!7*M!oj#yj=Y)VwwqgfKl)O0HS+gfq8m5^Wf&s(4J#G6iG20 zK&>B-ZafH}ws7`NPFO3el$)00>teW_^W%rD7iKRWp7z7_7YE_Xi~9tO4h+gCRwm{! zbHKNOWhVo9m7<2ni?*NOWySjYZr3gykDNRXR@Sd`N9&;*F^Qz~Wag?B*(RD*#o?wt zQm4>~!Z~O3F|5hoGuP{PO@ENr9ugxAPO0WommQCkPb5)aYHQktrPLw^6MDQq-vmP= z@p~2CJ2+H3d+Jh9YbJSC0y!!N`{*(GD%h}q3ZRTQkMb-EYs(EXNQ_Nb=TLEJR|&@p z5R|T+5^yHm-o2@t;5+Xh8~e}Aqjh^u>_T)WQg~fh`iNF@83}O^T?eg3B|GTa)Vf-* zg7Vv5YZWFQJ*PM`Ke!g1LBl>OdPe%Y62f?#ZV@u1xZh2v+C=K&(=J?Dd%MTbNuJ$C zuj|R@5P=(sg0ga-vB#H_gmaQz*h1wxkxW%9iD0jb(arHpRsr>VOv%q|7o^XeE0=he zGl8wtDhGVcR?5yN)H0#T*r)R7k_u^B@%sU%9%uLbT6~eoLf8aOu-xaTYomqV&ly|7 zp1Y#0bUd#bx2X?e23!8*iJ7WJpXbgE@tjE%0pJl+VYZ<-uh7{h(wOUZS+~ky0QTU& zbExJ*pi}1X1D7sewXe@UGMs!Zg64H|T+o;VeGzp^0dmEDmk%X)OO(x?8=!}1dqB_q%gwSeDIbLPXXV;`Q6JG8QI($Gd~J zFVFrZlhK6Uiq~L?ZEu>NJFMkR#g1jzHS|C0BEM}AKc9_OupYsSo1~?SaDqZP_(>e0G93jUhmHoOiW#2NZ!(j zQ~9=}@Tv5L$*J_RI$nUljf+*kk5{?UUNHLhwY^cDMwtPM_=)n9r{ej+I` zi-rs1bu^0TyeKHBN z(Qm6?KiSMiIerP=%}Jp6e!iR}!JKRc#shP`vyaS@H;9#T-V)5QuXI*DcyN+)3J9}8 zG9{l_+#i)_ z<5gQLONtsci~k-@G3xVEs9te`rBEu)a-wJ#+ay9S7!=cYEBj=P1+wEH?Xyd;N)Vx8 zh%uT2B1wzYh+9aq6nVm#iBI1yzcXhk!Aob1y(G#I^ZA_i^nE>4Mylt%57qc*avUv$ z?aGw-*eZCJH3hOVI&Y!Q@Kop`txC7fnvwo|~fscEXxiHL{YgQp~ZFgYO3ubrq*omu-6hryu25d5hB4h8D#)M&|K z{G3pLR&`X(mOJea=s%RAOBQQQf-W>4QBgD@)v~!reD!LrM^NKk`lH=JIe{*Zo}{SG zq0TJNtSCc9iU!$_w15SM*lzzDCuzA@al973tdc_O(JXvH0wgI3k}LpZF~qQ3HPi~3 zQ!$v#hxduhzHO<_4yFK(@U#O>7E6J8ZQTysspQi<;al9K-))V`Ck_!B5i@c$IoX5R zhYk7_xsY*g)q)UI9{WFOmG z+XHFCi ziODL`OV9vz-(;y%GbhZ{maS0iIPsHdmc`Osw^51Ww8elV6O^$uad|cFXF@4|wUd;F z((YHAvqgN0`*shzOhBo;r-ss{${QrjBNSBZJWMzyGSP^F8$5e3@;1}0=j-l8R1iO{LFTPfgmS;&D=P;m(LgOa~~O# z#OJO@dFT;LS0PiZYO>L0?2zC=R}P3S5bqtg^lEKw9eTWg^|YOvX`3v_TZaF+O&NaI z0?2W)v0=!?AoU_mm1PS5_L|5@P>CI?E>rz8qELIIB^ zuQx#aL5P+S7)M4IY(tjEI;93pdUv}lmzls%h6894qg1(Y^3hprtl~a}59t;o{N#@} z(+0YjaSS6RC6SMdGQa)qDn5)hmn+_nL1?hO;2Q9=&fL{1TqQ_KN>Wo-KkG$BPrzYg z-uNoxdzg?8g_Q!NzW&ln^1HWqMcJ0^x>+tJ8T{*Y-q*)20DfFgSGNBB?M>jz>n@r{ z{3=K+?7NI_pL>|QoRe}UYq3Gs4;`v|gg9quzJAdoIEYEGc8E+S8byXybL*KiS}Hmv za?~7r+-X^)qu{^1MdB5*bhrb$L4#0Ofv1iIYN>$;&f;;r6hxeGyn_IopJ3$R#iXOW zzNBx}d@_4^qkNu01E}~x=4Sy5W@FkP7b1zxXbDNE2?d8^(e&;*)-&cF6QadZTrlRefz24@RMcVgT*N$edhVjXSMP!f_oR0BsT|x{D3<3h)b~>|`G-^8rjON4B+cbbq{aO}!Icsf4nh7OC zNP4K%sANM}2=}DiVj?OOsBr=xwDd+V==mR9+`SnubVtvTrR!d0=4Sx+Z|<8}_@*RE zSkT26V}~?;*QN@Q-b33MSXfv|IWG1K7+g9%VZM9~M9NnoJIFT&o65OVda(*S9{N*; zfT$vjIv32=nAh;CuGf@S@W<4VtYY7BK1+<#@%ifoM`TP0QZ`9^WXp2t@FB1fItjB7 zr>(viLG}=H0eFafXjC;%gPJfVOJtd1JUeqlFEmSZHWgw;5C{M+YMGG149`&5pK~Ri z7GvU1`^QX%vVTcBoDWe(yf)xTv}t{#G$t__m4L_uO_NN_oxIxqY1wG9+x&+mRZ?t$ zh;Nafq83iHj~;}zOhPPhrForX?RDl0^2$A?-JndK*y7zkcHox{c-e8X^6{seM5#_A zCHP3hf&^3|o+TzMBCkXz6K>7R3)Q)8R=%nN3ZNXE%}@|FhL%>y(r#43kb&Jr$tAz|Hdp2=xTs+y^0vC# zK231F!EU3~ecO|T(n{r2YAq}f@Aa`LDTD?0<~7*!Om64vSfi<-iOqF(4Ur`4PXduY zS;6#PHg)-h)Q)1X5P*=9{OWI*a}(lD5}iNz%?lfdaP`Q_e%_xX7&ZP4Xr{i{6kv%_L*+ z@N^Qpf>;2zSIQ$QNK!>z7RHi~h{{n6x68M3guSxzJVRw%%H*5ReE%fpD=`zIDJ5L{ z_`odVGXyLoMhm|Z&tH!ZmcF*LH6G!io3)i5ZePf;z5T5`-`Bk^5+6twNKw|Zsnxk9 zdYI4WsRio30@6Ms)mlCgpe2VJn}jJF9=yxKO$x;t-wD2uc5=E%tJG^y>#*GcRh~;w zjHfc$FXb6C5{&Dgom>j=I70L~yxEHot`n^J5MhVl#Y5&$azq@nr>#0HOytr)L?60h z^LVKW3MO*agwOsA_F%y|S2{X?(HdfkMNnag#I)$GYSW8obrh`91&&V>7 zdS4!LlU*&?MpoT&GuWd!&U0)1}r8j%?KE5KV?8ae`pH)S%Af zZmEBMQwhs#)|JuL6e5Cc2HLB+VmQmLA!wOnS*+b42GOtn=ukXEik+#A6+p4u((FE} zg5b@>C-}brH$ce0=T04pqqVv2Sm~jI2lu_b?$eq&hojk3SMRK;ZK?><4j7qd?p#V{*tF>u!RK-AE3I;SV&3!NoI~`**ks(SH&bSXg+E>+ePWTU zQ52uy-tia7jj?2nVk%mWf zVetcp60x(}n^s893U?O%;cacPdNhH~IcZ2M;EWC!eLR6~Uha=!Am|4d269gbg_JB& z(8tqNNJm0&*hI``Gpu@XfeVFX8X*+csHJW|nHmg~4$N{+Sa=aK2iQ;-8|#8nAvFv$ z6Plr57^K)F#Jp)SPs#Yk9^6oy(OtW@1`P*M~UP}RU7yCYV@h^HB?R&BKzQR|YO(>+j) zhmKW0_vWXUP3ZrF%g5g`f6|;O(#AdG$B)1G;)|z@A3iuGSXI?@th}MN-ceWAaNyu^ zgHAJS@W9C<`b{5fNx1ALj`96Xlk+uUcin$J-gctK5fI;d;hb~y{O|nTJEutEOGF_D zyFr^!lX!Fy2|Gy1n6W@yMM_y2W!;_A?|YAojJVWREQ%GB>+V?8<{Q0GERd3mR!C;? zqUW-9jHC9oo96CcS=>kzuUxQp@iJK*u3h|g0eKZaEi4`-f4xQ!9-6y;w&>BgZrNLl z?|zNz$ukVPWVxq@fx2p#VIaqDf=(TJ(PFVACnsl#;CX>|w6bG#DPp+Wjd;L0G9CQD{^yg1>xPQ|r z2X{@kk6Xj-NUq%mQ4k$;QVs+SE+QDoL9{z^2XG->tF!{y3XnabJJrNFJE^UArdVwc zF1cpQ#?Py(r6C-dg9i`R*Vo^5*Buv(8#HoQPE*~{x88W}i%;MD{@hVlP01aQ-h($F z#|$5Q@w5qe(kv-!aPcn{otvDIr^dODZKO$ZhH}z*>1&cB<92c9%j!+Dxy6Db3 z8ufcUV>C5BgYm+z2Tfc1MXy(x{1K8T_gGnqLg6x+>eb-=+WkkyL{^l5Gs# znAh^$xT?oT)+B4=MVKR~aRpD=4=LoAtm$QtTUr01Qc!)pYYd1bOG$uhNgj!y5<^R% z3!$ChEVdeH_?&#Hk%*0j0W;i@I1FbMXysO`5r1BiozoSS)y?=r$;(Mev0J=~#d9+G z`T2M>eg669pLu5G(@+0>%a%-y?qSM{*TGjZm%OENi$Pf!c&lRjN{Q z6g}gi8b=rcE@FO^=C)=DC_GX_06D9GMd*1}`v^QG$&=m4t;ge64!Ck;P?^=WEe%br zFk8&*2jQ~IEoF#iV(5cdsG!vUc+x+2rSXIG@;0!@TvRrvXs;02EF_Lf< z4k54a(KIn#t9C^okeRzEbLoKSj9As76t&7^$xXfau-|jcb39!ioRaL>;xN|vq;fNB zyx-~f&iw3Sae{JFlWFDgq|X{m$d2UHD^S|FDKaPv992p6LKT5}gqdm?2Kilu_8`1i zhitr)MkQf}BV-??PnVOSx(4KnWaVt=bm?~cy$(^FhR)k01sP)1O2$`aNdQ4PLBXIwgCvh0;`Vr) zPHFpvn!1*%nr3L(7N@lLSxrsN9tE&cNX}VB->J!U<<#(YZfbimF$!tQl8uisQTgbm zwh3s`lqIW~sC@UmP0*t``C^!-rBO_p-4@Bn8^!+Vc&xN-YFo;~s5~0rjFLY<6t&Tr zZbF=S&&V4lhB$|*UH|slc~2KNHa@pV9EL0_IW=42arzF6#eyGh7?h(&=#NP~un^sV zx^T%N_5^sQ=rTHuS>m@F{Vp^I#0T;KV5ZC@gz1G?Bo87a=qfuKIP4~N%~<7EXH=eu z=6Epd4uyjuRST1n6s$`iVfE!<-HEWuCkO#1E@7oZ>sDz5wI-m_Hbeqh>Tef4abf0~ z5mx__0gm4sO#h_8ziL5tMejEhQzz zj(=>ngjGhBg36MM8s<*wmueHxCR31-sA5`nL$Z<{S^(37V$V&NfB}~vGk`TIX+mM) z{YQ`fpWD3~R??9Kt_~0$Pb_F}NE4vZg7_wJCcs?CM+5>P zpFiMnw`OHn(^4#GC-i*;G#e?U8wfky{)!V-Rh1{~W+Q&-Ao|NIoAw;2JW^WM z>h?Qbt(&)OS+#1_Q%^nh&wu{&*=L{KvSka}vy=qqtf9MIR8Ppy7bl~oY3qebF{xNU z4W{2I&SFoS5VJHJh$~|*|JF2!zwBw>VyQ(Z#~1FM8=dKvX1!xq1;y?Vxk8%57W2?H z@f{^&-mOfwMrXQ3+9uz@xjsZHzxBvgs5Br5DMs<(It~rHgp7fbcDef zX6nch-PDt>zd$$8u8_zEe(05%Q9>8e>2ye33B-h~PWqORpg$f~yL+~vM?#EiC=F{I zZ8B6{6;w5b!e*7fzgo}=1qJtJW?r|&VZ32yPNQE#>uemMZQ^1e_I>>C^=o-x7#k>6 zf{+N0SdzUDAfbjjLhX=%lRUZyDpaWnkce!B7pX=WB(7|72n=BX1I-RoGb7^S!c2>V z2)HN%pMHGafVXXoCEKd*f0M6F}WlqvW%n>%;zf&~le z>granUQH=*&K~;Wk33`k6XM{a$lS+Q%Wpag!i3vOqy;V#mp`_JjV2qT3T9iax#A3fh=Ju3R!_ti<~5JU!B2CszQRc zmJKv^e{7PVxa@sOg;cf-^fVpmGE?C7yR0f*%eu zE+1uj3fX9lteKtWiCdI|kO=>WBdMq49m<5DgrW6m0shAZy){x>feT~IV6d-U+!u_OCwjp~2CyYcBYpC4^8l)97m*Rmg_ty{Mu zt7uU;OG$9f8dL`lm9XbWwhdhH%_D&a7R9fsDJ?CPOlO4ZH9r=IFeRlZS=(ga*N}k& z*;dI-O>B&WbFPz;k|LP|!R2zX4qwr=0~p|iGeKrCcpD@s&`AT<&x?CU>vTGs&1SX6 zD;q?o{vN^b0}ZKxt{rB&E`^~>%T|Ce5T-^W8+apyibMkbKsX}3ghweT^QMZZg!(|6 zXbTA%M`tfMb_t{;eRW2ovgGKl)v8XJXiL5z%aCdDcszA=b#x0YEt|h8`|_0o*&o#` z_J(aE?4N!o_sIX`&xRLe!=xS<30?Kgt$8)R_~F>4g^fQS)SEv~%7$b~1br_NiS!eU8WDcY9*qbH($H(V#OJb?hd;_SDqWY}v8}Eq`~l zO0CiLOA^vep<%;@m6w+{H#a9GCH4Ak$S!Gic_01HhQhquMRO)!IH~RRvcrcDZ~f}P zky`eaOjFR}i|7TvQ`cHCEZbN#bWll234XYK@{^xXU{3dGX<<8^ef8B>WbHoV#*JI? z!I5i6u-PYiF`B^NHU5@yW=LVrTBMoo=)5^ij?*MKhjV^`z8~5SA^@E(%rMBka(mDv z%h2C446-{6SG!$ zqgY5EP;`w>qs}&jv$Ua1O)x_pOjm{N>X20xvI^l|%?4-b=0U?X20yLvuL?y@<={lX z;qyA&xC<&eV7E`5kU!&x{Xd(U_I8r4+8dmH%=PUL>dZLQ;j0j!Hn7&9j?7ARr|aYQ z**WUg?QCZ6zxDvNpieWY^_`8Dp$CPN|Lv zn8}eL|TtJnhw`F8(YG@kPwKlBNVY~$6k>9tDg?O^Md5fS7*D%CwXuBDhJ0W z4W@d(y}_Rrh^QVNSvNb)9rvZ2H>+)bIFefH(}cP$SJXOlv zLLn(IMVA|)l7w;l4ue5wHX9(laY#;Idr$@VD{gLX-m+!O?%lgDy67UBb~v4c@CO`> zXvNu5gu5qu+m^!>`M9 z4*DQ>xTM&7ccI}|soI&6>q*1*KUX|l2h&uc6qVmwv$uFbX5{y8R$jg8c#*dtrQ)P91r?B<1hNlPMx$P=|+D0`Sc=bZZ<%ZP27n@24>)Uc*E+=yWQvCdILe0XWUFuviWPPFQMC>c;X41hYT4~R8&M#a^sQK z6tiY{?rD;hH7$W{rS4XbA1zhwEK|1}v)k=UmMp;;tsNToKmYj;g3X#WD>J)aAQbTg z!td`z{Y8Xu!0mF@)z!WGmnD=Gr<L3{pj!ELc#Dik4^%A@Q@(*bw&XEq2mlMr4~eVNI*oS0HhD(0HgwuCS4T3 zs*Fy+(O@t@Mhr_|7WJ5q5RH-xdLWN(&5)dMRaM+nZ(RLGGxMqj@>Y>Kp zrfDygoK7`iy%5pk7W_`<)`q}`^}eZ2|22}IAiPm+eY4u8SBIx2dkyNy7`rbN5gsc| zmApmB_g8}($0v0?hT6HBM5REKqaNc*9z_Y{I)V#Al2sWJR&rN5b_CJ^2uUr0%m4;z zX{09e^6r$c0s}yGv-q*d(IvZr)2$}M5x3h1DG39tUvo9t+}!-oLl2=V89aD!SZ6J+ zVokKEHB^|PKRs%)ywQK8#@{5)Sr=s+>{_=`6HZT0htR<<1{~AU(h3R+RuWlUJKh17C-J`1KE`6#d6%XSa4(D8ex@UCWbY@S3 zqD++CDHzlMewSOtjRqk^fE)(C=>DNKlarH^l9H?H5%|4;nN$M8BQ9M65h=P7 zN(xfaY&Ihi{Hoy6Ua!~bbmGjUWMfFx6cTCzk)}Yn$scO;pNy0Q8kHqaf3q{R*Ad(z zIh|_Me)i=aom-!(nduEz<`@snOxrs==`WY0*Urgs-`KC^Cj-8`I(Nl{q=utz-Nq)< zF^^7)8O0w~uWvN3Jf5_%v6sCa${YoV8bnFb^MK?L1$9AniZemABcI^{1FC}zs41K~ zfjR{_B3X&{amfW|Kv!%}NA70;l@JI>Qj$YtWMtqMz!!+rJA+n(8d5Udc3O7$62y<+ zxI1@MD}x?d*-4WXNOn;K;0zbY2tZ!!uUs@BL5M%dJ}5{?Ko}q&;ZBlK z6b@>YpprkRh%OM`Q3alppS)CA32&XuOf~bi?6c_H_fS z&s?4PEmz3a=+^|oszK%ej+UU>9cp_@FLoL7O~L7@UHrAGv}#knJ)&Y2L={Kx6##Kj z4g1g{tD26V{}BMl20&){EH_@JFgt#^Pu(FqJA2d7#!(ru zgOOrCMQ3J^!uEieoyKE#3-1NApZSw*pTptwj>^^IhZH4ldaYJ+2h8iH)hD;pr1YIe zq_eZPshx^!d>z2wDm|dfP>0EB(($gpfZ{f9JrOe~qt} zkMZ{Sd2Lrv-4y8RCQ;PBkl!aR!wLo=#FeX^P>d*Ny$A#!O1Kk{7{UV>@DmRM+7Ary zBFBzE7|9fET8Ki*l7N}46ow44m7s`{<*XtisKsru2{cTX%Ny+eI;r!Bva+%lUwm=I zh!OZfXAdnNx6kAJYUj?Hnws{nU-t#YRlbU*K$1x_D$l6XBvA8%1`V1sXHF+;gObde zi37}o2M>PZlU@JssTcnGx2KP(-AxV za`G~?yPVEzohg{q8?|`M2k3x^;(2curT%cWLQ$S1+x~s)+GQ;L=N4s2PQ@ ze3%Jz?T{cy5bj9aX0t&@D*Jn=0bBw<#5mJ+gP~xA4duju=oE`CL_p%CrKKTR$u7cD zh_3QM;9#~ol&sRH7?LMt%RAs`l61y#DcVuC$S`9hHL+Iil0n90I3M*cC+kU46?l1v z`)WGUwR0wz-%uVox@!?er%D}dT176ndLYuY$8)nIg!bPV&!4d0e=tq5bU@f2c5JWq zH?qMIKz7>W#|TVzJ1DFX}o;=fS{I5Y@kIrOJXM&ZrK!!_W~3%-(Mh-*A8x zSAh#91v9E1=>Q5tEdj{a1!6LcI4gotEM>Dn3QFtgLCrsYqX2*G>(;HSuC6|K@Zg4z z-j39K^^^a-rM|u%Rw+c^Q|}6Xak$loADfrmrw=}6X0HLy U5_` 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�(@i;Oaw+urw>m!`hb%hI@N>`&I>4>smk3j)M9F9(_i)A~iz+xOP+V&;^AOu>qd|%D8#Y(mTbHX$m?{s{Uoy=i9ow$L;Rql#&PM;YXF*G&HLOAC9@3|zMdW< zPXUnIMaPe0bPTTa*E2u+4t!59{R6Y4M2VTJ2bFg!8@}w;X6oH%R;DP%NEMbzKftfm z>ClgySE2-oP}c+`6*8&~qNe;NtfvwUdqx1cbZ=$EZA!qw!NJK&DoK=!83+C^1uCax literal 0 HcmV?d00001 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