Spaces:
Running
Running
BorowyP
commited on
Commit
•
fd0472a
1
Parent(s):
5e0eb42
panel app
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- 2023_01_30_Mittelwerte_Masseverlust.xlsx +0 -0
- Boden Temperatur Feuchte.py +128 -0
- Bodenfeuchte.py +190 -0
- Bodentemperatur.py +192 -0
- Dockerfile +11 -0
- HD_Logo.png +0 -0
- Hemisfere.py +203 -0
- Hemisphere_totals_holzdeko.csv +13 -0
- LFE_Logo.png +0 -0
- Luftfeuchte.py +184 -0
- Lufttemperatur.py +200 -0
- Masseverlust.py +450 -0
- Nied_holzdeko_csv.csv +1081 -0
- Niederschlag.py +151 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20210901_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20210914_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20210929_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20211014_GLI_3NE_K_mA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20211026_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20211109_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20211124_GLI_3NE_K_mA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20211208_GLI_3NE_K_mA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220215_GLI_3NE_K_mA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220317_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220401_GLI_3NE_K_mA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220420_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220518_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220601_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220712_GLI_3NE_K_mA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20220809_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20221020_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/mA/resized20221129_GLI_3NE_K_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20210929_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20211014_GLI_3NE_K_oA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20211026_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20211109_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20211124_GLI_3NE_K_oA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20211208_GLI_3NE_K_oA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220215_GLI_3NE_K_oA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220317_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220401_GLI_3NE_K_oA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220420_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220518_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220601_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220712_GLI_3NE_K_oA.JPG +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20220809_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20221020_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/K/oA/resized20221129_GLI_3NE_K_oA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/nK/mA/resized20210914_GLI_3NW_nK_mA.jpg +0 -0
- Stahlrahmen-Fotos/Glienig/nK/mA/resized20211014_GLI_3NW_nK_mA.JPG +0 -0
2023_01_30_Mittelwerte_Masseverlust.xlsx
ADDED
Binary file (36.3 kB). View file
|
|
Boden Temperatur Feuchte.py
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Fri Mar 3 12:57:34 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
10 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
11 |
+
import holoviews as hv
|
12 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
13 |
+
|
14 |
+
|
15 |
+
hv.extension('bokeh')
|
16 |
+
#pn.extension('tabulator')
|
17 |
+
|
18 |
+
pn.extension(sizing_mode="stretch_width")
|
19 |
+
#pd.set_option("precision", 0)
|
20 |
+
|
21 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
22 |
+
import numpy as np
|
23 |
+
from bokeh.models.formatters import DatetimeTickFormatter
|
24 |
+
formatter = DatetimeTickFormatter(months='%b %Y') # wird in .hvplot benötigt für x-achse!
|
25 |
+
|
26 |
+
soil_temp = pd.read_csv('df_soil_temp.csv',header=0,sep=',')
|
27 |
+
|
28 |
+
soil_temp.index = pd.to_datetime(soil_temp['Date'], format='%Y.%m.%d %H:%M:%S')
|
29 |
+
soil_temp.index.names = ['Date']
|
30 |
+
soil_temp = soil_temp.drop(['Date'], axis=1)
|
31 |
+
soil_temp = soil_temp.drop(['Unnamed: 0'], axis=1)
|
32 |
+
|
33 |
+
|
34 |
+
soil_hum = pd.read_csv('df_soil_hum.csv',header=0,sep=',')
|
35 |
+
soil_hum.index = pd.to_datetime(soil_hum['Date'], format='%Y.%m.%d %H:%M:%S')
|
36 |
+
soil_hum.index.names = ['Date']
|
37 |
+
soil_hum = soil_hum.drop(['Date'], axis=1)
|
38 |
+
soil_hum = soil_hum.drop(['Unnamed: 0'], axis=1)
|
39 |
+
|
40 |
+
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success')
|
41 |
+
|
42 |
+
soilhumbtn = pn.widgets.ToggleGroup(
|
43 |
+
name='soilhumidity',
|
44 |
+
options=['Prof100', 'Prof200', 'Prof300', 'Prof400', 'Prof600', 'Prof1000'],
|
45 |
+
value=['Prof100'],
|
46 |
+
button_type='success')
|
47 |
+
|
48 |
+
|
49 |
+
soiltempbtn = pn.widgets.ToggleGroup(
|
50 |
+
name='soiltemperature',
|
51 |
+
options=['Temp05', 'Temp10', 'Temp20', 'Temp30', 'Temp50', 'Temp100'],
|
52 |
+
value=['Temp05'],
|
53 |
+
button_type='success')
|
54 |
+
soil_date_slider = pn.widgets.DateRangeSlider(name='Date', start=soil_temp.index.min(), end=soil_temp.index.max())
|
55 |
+
|
56 |
+
soil_temp_i= soil_temp.interactive()
|
57 |
+
|
58 |
+
soil_temp_i = (
|
59 |
+
soil_temp_i[
|
60 |
+
(soil_temp_i.Standort == Stndrt) &
|
61 |
+
(soil_temp_i.index >= soil_date_slider.param.value_start) &
|
62 |
+
(soil_temp_i.index <= soil_date_slider.param.value_end)
|
63 |
+
]
|
64 |
+
)
|
65 |
+
|
66 |
+
|
67 |
+
|
68 |
+
soil_hum_i = soil_hum.interactive()
|
69 |
+
|
70 |
+
soil_hum_i = ( soil_hum_i[
|
71 |
+
(soil_hum_i.Standort == Stndrt) &
|
72 |
+
(soil_hum_i.index >= soil_date_slider.param.value_start) &
|
73 |
+
(soil_hum_i.index <= soil_date_slider.param.value_end) ])
|
74 |
+
|
75 |
+
soiltempplot = soil_temp_i.hvplot(x='Date',xlabel='Datum',title=Stndrt, y=soiltempbtn, color=PALETTE, line_width=1, xformatter=formatter, ylabel='Bodentemperatur [°C]')
|
76 |
+
|
77 |
+
|
78 |
+
soilhumplot = soil_hum_i.hvplot(x='Date',xlabel='Datum',title=Stndrt, y=soilhumbtn, color=PALETTE, line_width=1, xformatter=formatter, ylabel='Bodenfeuchte[%]')
|
79 |
+
|
80 |
+
soiltemp_box = soil_temp_i[['Temp05', 'Temp10', 'Temp20', 'Temp30', 'Temp50', 'Temp100']].fillna(0)
|
81 |
+
soiltemp_box_plot = soiltemp_box.hvplot(kind='box', legend=False, xlabel=Stndrt, ylabel='Bodentemperatur [°C]')
|
82 |
+
|
83 |
+
|
84 |
+
soilhum_box = soil_hum_i[['Prof100', 'Prof200', 'Prof300', 'Prof400', 'Prof600', 'Prof1000']].fillna(0)
|
85 |
+
soilhum_box_plot = soilhum_box.hvplot(kind='box', legend=False, xlabel=Stndrt, ylabel='Bodenfeuchte [%]')
|
86 |
+
|
87 |
+
|
88 |
+
|
89 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
90 |
+
hd_logo
|
91 |
+
|
92 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
93 |
+
|
94 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
95 |
+
|
96 |
+
template = pn.template.FastListTemplate(
|
97 |
+
title='Holzdeko Dashboard',
|
98 |
+
sidebar=[hd_logo,
|
99 |
+
pn.pane.Markdown("## Einstellungen"),
|
100 |
+
'Standort',Stndrt,
|
101 |
+
lfe_logo,
|
102 |
+
fnr_logo
|
103 |
+
#'Boden',
|
104 |
+
#'Gekalkt/ungekalkt', yaxis,
|
105 |
+
],
|
106 |
+
main=[pn.pane.Markdown("## Boden"),
|
107 |
+
soiltempbtn,
|
108 |
+
soil_date_slider,
|
109 |
+
soiltempplot.panel(),
|
110 |
+
soiltemp_box_plot.panel(),
|
111 |
+
soilhumbtn,
|
112 |
+
soil_date_slider,
|
113 |
+
soilhumplot.panel(),
|
114 |
+
soilhum_box_plot.panel()
|
115 |
+
|
116 |
+
#accent_base_color="#88d8b0",
|
117 |
+
#header_background="#88d8b0",
|
118 |
+
])
|
119 |
+
|
120 |
+
|
121 |
+
|
122 |
+
|
123 |
+
template.servable();
|
124 |
+
|
125 |
+
#print('fertig!')
|
126 |
+
# To launch this dashboard as a web server, we can simply run
|
127 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\soil_air\
|
128 |
+
# panel serve 20230303_soil_temp_hum_docker.ipynb --autoreload
|
Bodenfeuchte.py
ADDED
@@ -0,0 +1,190 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Tue Mar 7 12:04:33 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
10 |
+
|
11 |
+
from hvplot.plotting import scatter_matrix
|
12 |
+
|
13 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
14 |
+
import holoviews as hv
|
15 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
16 |
+
|
17 |
+
|
18 |
+
hv.extension('bokeh')
|
19 |
+
#pn.extension('tabulator')
|
20 |
+
|
21 |
+
pn.extension(sizing_mode="stretch_width")
|
22 |
+
#pd.set_option("precision", 0)
|
23 |
+
|
24 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
25 |
+
import numpy as np
|
26 |
+
from bokeh.models.formatters import DatetimeTickFormatter
|
27 |
+
formatter = DatetimeTickFormatter(months='%b %Y') # wird in .hvplot benötigt für x-achse!
|
28 |
+
|
29 |
+
soil_hum = pd.read_csv('df_soil_hum.csv',header=0,sep=',')
|
30 |
+
soil_hum.index = pd.to_datetime(soil_hum['Date'], format='%Y.%m.%d %H:%M:%S')
|
31 |
+
soil_hum.index.names = ['Date']
|
32 |
+
soil_hum = soil_hum.drop(['Date'], axis=1)
|
33 |
+
soil_hum = soil_hum.drop(['Unnamed: 0'], axis=1)
|
34 |
+
soil_hum[soil_hum.columns[list(range(6))]] = soil_hum[soil_hum.columns[list(range(6))]].round(1)
|
35 |
+
|
36 |
+
|
37 |
+
soil_hum = soil_hum.rename(columns={'Prof100' : '100',
|
38 |
+
'Prof200' : '200',
|
39 |
+
'Prof300' : '300',
|
40 |
+
'Prof400' : '400',
|
41 |
+
'Prof600' : '600' ,
|
42 |
+
'Prof1000' : '1000',
|
43 |
+
'Standort' : 'Standort'})
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
|
48 |
+
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success')
|
49 |
+
|
50 |
+
soilhumbtn = pn.widgets.ToggleGroup(
|
51 |
+
name='soilhumidity',
|
52 |
+
options=['100', '200', '300', '400', '600', '1000'],
|
53 |
+
value=['100'],
|
54 |
+
button_type='success')
|
55 |
+
|
56 |
+
soil_date_slider = pn.widgets.DateRangeSlider(name='Date', start=soil_hum.index.min(), end=soil_hum.index.max())
|
57 |
+
|
58 |
+
|
59 |
+
|
60 |
+
soil_hum_i = soil_hum.interactive()
|
61 |
+
|
62 |
+
soil_hum_i = ( soil_hum_i[
|
63 |
+
(soil_hum_i.Standort == Stndrt) &
|
64 |
+
(soil_hum_i.index >= soil_date_slider.param.value_start) &
|
65 |
+
(soil_hum_i.index <= soil_date_slider.param.value_end) ])
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
soilhumplot = soil_hum_i.hvplot(x='Date',xlabel='Datum',title=Stndrt, y=soilhumbtn, color=PALETTE, line_width=1, xformatter=formatter, ylabel='Bodenfeuchte[%]')
|
70 |
+
|
71 |
+
|
72 |
+
|
73 |
+
|
74 |
+
|
75 |
+
def callback_hum(soil_hum_i):
|
76 |
+
|
77 |
+
df = soil_hum_i
|
78 |
+
|
79 |
+
monitor = pd.DataFrame({#'Standort' : [Stndrt.value, Stndrt.value],
|
80 |
+
#'von' : soil_temp_i.index.min(),
|
81 |
+
#'bis' : soil_temp_i.index.max(),
|
82 |
+
'Mittelwert' : [df['100'].mean(),
|
83 |
+
df['200'].mean(),
|
84 |
+
df['300'].mean(),
|
85 |
+
df['400'].mean(),
|
86 |
+
df['600'].mean(),
|
87 |
+
df['1000'].mean(),
|
88 |
+
] ,
|
89 |
+
'Median' : [df['100'].median(),
|
90 |
+
df['200'].median(),
|
91 |
+
df['300'].median(),
|
92 |
+
df['400'].median(),
|
93 |
+
df['600'].median(),
|
94 |
+
df['1000'].median(),
|
95 |
+
] ,
|
96 |
+
'Maximum' : [df['100'].max(),
|
97 |
+
df['200'].max(),
|
98 |
+
df['300'].max(),
|
99 |
+
df['400'].max(),
|
100 |
+
df['600'].max(),
|
101 |
+
df['1000'].max()],
|
102 |
+
'Minimum' : [df['100'].min(),
|
103 |
+
df['200'].min(),
|
104 |
+
df['300'].min(),
|
105 |
+
df['400'].min(),
|
106 |
+
df['600'].min(),
|
107 |
+
df['1000'].min()],
|
108 |
+
'Anzahl' : [df['100'].count(),
|
109 |
+
df['200'].count(),
|
110 |
+
df['300'].count(),
|
111 |
+
df['400'].count(),
|
112 |
+
df['600'].count(),
|
113 |
+
df['1000'].count()]
|
114 |
+
|
115 |
+
}, index=['100',
|
116 |
+
'200',
|
117 |
+
'300',
|
118 |
+
'400',
|
119 |
+
'600',
|
120 |
+
'1000',
|
121 |
+
|
122 |
+
])
|
123 |
+
monitor.index.name='Profiltiefe'
|
124 |
+
|
125 |
+
#soiltemp_scatter = scatter_matrix(soil_temp, alpha=0.2) #Scattermatrix zum Vergleich der einzelnen Profiltiefen???
|
126 |
+
|
127 |
+
soiltemp_scatter_df = soil_hum[soil_hum['Standort'] == Stndrt.value]#.iloc[df.index.min(): df.index.max()]
|
128 |
+
|
129 |
+
soiltemp_scatter = scatter_matrix(soiltemp_scatter_df, alpha=0.2)
|
130 |
+
|
131 |
+
scatter_headline = pn.pane.Markdown(f"## Scattermatrix Bodenfeuchte **{Stndrt.value}**")
|
132 |
+
|
133 |
+
scatter_discription = pn.pane.Markdown('scatter_matrix shows all the pairwise relationships between the columns of your data. Each non-diagonal entry plots the corresponding columns against another, while the diagonal plot shows the distribution of the data within each individual column.'
|
134 |
+
)
|
135 |
+
|
136 |
+
monitor_gesamt = pd.DataFrame({'Standort' : [Stndrt.value],
|
137 |
+
'von' : df.index.min(),
|
138 |
+
'bis' : df.index.max(),
|
139 |
+
'Mittelwert' : df.mean(numeric_only=True).mean(),
|
140 |
+
'Median' : df.median(numeric_only=True).median(),
|
141 |
+
'Maximum' : df.max(numeric_only=True).max(),
|
142 |
+
'Minimum' : df.min(numeric_only=True).min()
|
143 |
+
}, index=['Gesamt'])
|
144 |
+
|
145 |
+
|
146 |
+
|
147 |
+
|
148 |
+
|
149 |
+
return pn.Column(monitor_gesamt, monitor,scatter_headline, soiltemp_scatter, scatter_discription)
|
150 |
+
|
151 |
+
callback = soil_hum_i.pipe(callback_hum)
|
152 |
+
|
153 |
+
callback
|
154 |
+
|
155 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
156 |
+
hd_logo
|
157 |
+
|
158 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
159 |
+
|
160 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
161 |
+
|
162 |
+
template = pn.template.FastListTemplate(
|
163 |
+
title='Holzdeko Dashboard',
|
164 |
+
sidebar=[hd_logo,
|
165 |
+
pn.pane.Markdown("## Einstellungen"),
|
166 |
+
'Standort',Stndrt,
|
167 |
+
lfe_logo,
|
168 |
+
fnr_logo
|
169 |
+
#'Boden',
|
170 |
+
#'Gekalkt/ungekalkt', yaxis,
|
171 |
+
],
|
172 |
+
main=[pn.pane.Markdown("## Bodenfeuchte"),
|
173 |
+
soilhumbtn,
|
174 |
+
soil_date_slider,
|
175 |
+
soilhumplot.panel(),
|
176 |
+
callback
|
177 |
+
|
178 |
+
#accent_base_color="#88d8b0",
|
179 |
+
#header_background="#88d8b0",
|
180 |
+
])
|
181 |
+
|
182 |
+
|
183 |
+
|
184 |
+
|
185 |
+
template.servable();
|
186 |
+
|
187 |
+
#print('fertig!')
|
188 |
+
# To launch this dashboard as a web server, we can simply run
|
189 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\soil_air\
|
190 |
+
# panel serve 20230307_soil_hum_docker.ipynb --autoreload
|
Bodentemperatur.py
ADDED
@@ -0,0 +1,192 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Fri Mar 3 12:57:34 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
10 |
+
|
11 |
+
from hvplot.plotting import scatter_matrix
|
12 |
+
|
13 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
14 |
+
import holoviews as hv
|
15 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
16 |
+
|
17 |
+
|
18 |
+
hv.extension('bokeh')
|
19 |
+
#pn.extension('tabulator')
|
20 |
+
|
21 |
+
pn.extension(sizing_mode="stretch_width")
|
22 |
+
#pd.set_option("precision", 0)
|
23 |
+
|
24 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
25 |
+
import numpy as np
|
26 |
+
from bokeh.models.formatters import DatetimeTickFormatter
|
27 |
+
formatter = DatetimeTickFormatter(months='%b %Y') # wird in .hvplot benötigt für x-achse!
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
soil_temp = pd.read_csv('df_soil_temp.csv',header=0,sep=',')
|
32 |
+
|
33 |
+
soil_temp.index = pd.to_datetime(soil_temp['Date'], format='%Y.%m.%d %H:%M:%S')
|
34 |
+
soil_temp.index.names = ['Date']
|
35 |
+
soil_temp = soil_temp.drop(['Date'], axis=1)
|
36 |
+
soil_temp = soil_temp.drop(['Unnamed: 0'], axis=1)
|
37 |
+
soil_temp[soil_temp.columns[list(range(6))]] = soil_temp[soil_temp.columns[list(range(6))]].round(1) #RUNDEN auf 1 Kommastelle fuer bessere Perfomance!!!
|
38 |
+
|
39 |
+
soil_temp = soil_temp.rename(columns={'Temp05' : '50',
|
40 |
+
'Temp10' : '100',
|
41 |
+
'Temp20' : '200',
|
42 |
+
'Temp30' : '300',
|
43 |
+
'Temp50' : '500' ,
|
44 |
+
'Temp100' : '1000',
|
45 |
+
'Standort' : 'Standort'})
|
46 |
+
|
47 |
+
|
48 |
+
|
49 |
+
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success')
|
50 |
+
|
51 |
+
soiltempbtn = pn.widgets.ToggleGroup(
|
52 |
+
name='soiltemperature',
|
53 |
+
options=['50', '100', '200', '300', '500', '1000'],
|
54 |
+
value=['50'],
|
55 |
+
button_type='success')
|
56 |
+
|
57 |
+
soil_date_slider = pn.widgets.DateRangeSlider(name='Date', start=soil_temp.index.min(), end=soil_temp.index.max())
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
soil_temp_i= soil_temp.interactive()
|
62 |
+
|
63 |
+
soil_temp_i = (
|
64 |
+
soil_temp_i[
|
65 |
+
(soil_temp_i.Standort == Stndrt) &
|
66 |
+
(soil_temp_i.index >= soil_date_slider.param.value_start) &
|
67 |
+
(soil_temp_i.index <= soil_date_slider.param.value_end)
|
68 |
+
]
|
69 |
+
)
|
70 |
+
|
71 |
+
soiltempplot = soil_temp_i.hvplot(x='Date',xlabel='Datum',title=Stndrt, y=soiltempbtn, color=PALETTE, line_width=1, xformatter=formatter, ylabel='Bodentemperatur [°C]')
|
72 |
+
|
73 |
+
|
74 |
+
|
75 |
+
def callback_temp(soil_temp_i):
|
76 |
+
|
77 |
+
df = soil_temp_i
|
78 |
+
|
79 |
+
monitor = pd.DataFrame({#'Standort' : [Stndrt.value, Stndrt.value],
|
80 |
+
#'von' : soil_temp_i.index.min(),
|
81 |
+
#'bis' : soil_temp_i.index.max(),
|
82 |
+
'Mittelwert' : [df['50'].mean(),
|
83 |
+
df['100'].mean(),
|
84 |
+
df['200'].mean(),
|
85 |
+
df['300'].mean(),
|
86 |
+
df['500'].mean(),
|
87 |
+
df['1000'].mean(),
|
88 |
+
] ,
|
89 |
+
'Median' : [df['50'].median(),
|
90 |
+
df['100'].median(),
|
91 |
+
df['200'].median(),
|
92 |
+
df['300'].median(),
|
93 |
+
df['500'].median(),
|
94 |
+
df['1000'].median(),
|
95 |
+
] ,
|
96 |
+
'Maximum' : [df['50'].max(),
|
97 |
+
df['100'].max(),
|
98 |
+
df['200'].max(),
|
99 |
+
df['300'].max(),
|
100 |
+
df['500'].max(),
|
101 |
+
df['1000'].max()],
|
102 |
+
'Minimum' : [df['50'].min(),
|
103 |
+
df['100'].min(),
|
104 |
+
df['200'].min(),
|
105 |
+
df['300'].min(),
|
106 |
+
df['500'].min(),
|
107 |
+
df['1000'].min()],
|
108 |
+
'Anzahl' : [df['50'].count(),
|
109 |
+
df['100'].count(),
|
110 |
+
df['200'].count(),
|
111 |
+
df['300'].count(),
|
112 |
+
df['500'].count(),
|
113 |
+
df['1000'].count()]
|
114 |
+
|
115 |
+
}, index=['50',
|
116 |
+
'100',
|
117 |
+
'200',
|
118 |
+
'300',
|
119 |
+
'500',
|
120 |
+
'1000',
|
121 |
+
|
122 |
+
])
|
123 |
+
monitor.index.name='Profiltiefe'
|
124 |
+
|
125 |
+
#soiltemp_scatter = scatter_matrix(soil_temp, alpha=0.2) #Scattermatrix zum Vergleich der einzelnen Profiltiefen???
|
126 |
+
|
127 |
+
soiltemp_scatter_df = soil_temp[soil_temp['Standort'] == Stndrt.value]#.iloc[df.index.min(): df.index.max()]
|
128 |
+
|
129 |
+
soiltemp_scatter = scatter_matrix(soiltemp_scatter_df, alpha=0.2)
|
130 |
+
|
131 |
+
scatter_headline = pn.pane.Markdown(f"## Scattermatrix **{Stndrt.value}**")
|
132 |
+
|
133 |
+
scatter_discription = pn.pane.Markdown('scatter_matrix shows all the pairwise relationships between the columns of your data. Each non-diagonal entry plots the corresponding columns against another, while the diagonal plot shows the distribution of the data within each individual column.'
|
134 |
+
)
|
135 |
+
|
136 |
+
monitor_gesamt = pd.DataFrame({'Standort' : [Stndrt.value],
|
137 |
+
'von' : df.index.min(),
|
138 |
+
'bis' : df.index.max(),
|
139 |
+
'Mittelwert' : df.mean(numeric_only=True).mean(),
|
140 |
+
'Median' : df.median(numeric_only=True).median(),
|
141 |
+
'Maximum' : df.max(numeric_only=True).max(),
|
142 |
+
'Minimum' : df.min(numeric_only=True).min()
|
143 |
+
}, index=['Gesamt'])
|
144 |
+
|
145 |
+
|
146 |
+
|
147 |
+
|
148 |
+
|
149 |
+
return pn.Column(monitor_gesamt, monitor,scatter_headline, soiltemp_scatter, scatter_discription)
|
150 |
+
|
151 |
+
callback = soil_temp_i.pipe(callback_temp)
|
152 |
+
|
153 |
+
callback
|
154 |
+
|
155 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
156 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
157 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
158 |
+
|
159 |
+
template = pn.template.FastListTemplate(
|
160 |
+
title='Holzdeko Dashboard',
|
161 |
+
sidebar=[hd_logo,
|
162 |
+
pn.pane.Markdown("## Einstellungen"),
|
163 |
+
'Standort',Stndrt,
|
164 |
+
lfe_logo,
|
165 |
+
fnr_logo
|
166 |
+
|
167 |
+
|
168 |
+
],
|
169 |
+
main=[pn.pane.Markdown("## Bodentemperatur"),
|
170 |
+
soiltempbtn,
|
171 |
+
soil_date_slider,
|
172 |
+
soiltempplot.panel(),
|
173 |
+
callback.panel(),
|
174 |
+
|
175 |
+
|
176 |
+
|
177 |
+
|
178 |
+
|
179 |
+
|
180 |
+
#accent_base_color="#88d8b0",
|
181 |
+
#header_background="#88d8b0",
|
182 |
+
])
|
183 |
+
|
184 |
+
|
185 |
+
|
186 |
+
|
187 |
+
template.servable();
|
188 |
+
|
189 |
+
#print('fertig!')
|
190 |
+
# To launch this dashboard as a web server, we can simply run
|
191 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\soil_air\
|
192 |
+
# panel serve 20230307_soil_temp_docker.ipynb --autoreload
|
Dockerfile
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM python:3.9
|
2 |
+
|
3 |
+
WORKDIR /code
|
4 |
+
|
5 |
+
COPY ./requirements.txt /code/requirements.txt
|
6 |
+
|
7 |
+
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
8 |
+
|
9 |
+
COPY . .
|
10 |
+
|
11 |
+
CMD ["panel", "serve", "/code/Lufttemperatur.py", "/code/Luftfeuchte.py", "/code/Niederschlag.py","/code/Bodentemperatur.py", "/code/Bodenfeuchte.py", "/code/Masseverlust.py", "/code/Hemisfere.py", "/code/Stahlrahmen.py", "--address", "0.0.0.0", "--port", "7860", "--allow-websocket-origin", "*"]
|
HD_Logo.png
ADDED
Hemisfere.py
ADDED
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Fri Mar 10 15:10:36 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import os
|
9 |
+
|
10 |
+
import matplotlib.pyplot as plt
|
11 |
+
|
12 |
+
import numpy as np
|
13 |
+
import pandas as pd
|
14 |
+
|
15 |
+
import hvplot.pandas
|
16 |
+
|
17 |
+
import holoviews as hv
|
18 |
+
|
19 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
20 |
+
|
21 |
+
import xarray as xr
|
22 |
+
import panel as pn
|
23 |
+
|
24 |
+
import panel.widgets as pnw
|
25 |
+
|
26 |
+
|
27 |
+
|
28 |
+
import hvplot.xarray
|
29 |
+
|
30 |
+
cwd = os.getcwd()
|
31 |
+
print(cwd)
|
32 |
+
print(os.listdir(cwd))
|
33 |
+
os.chdir('hemi_fotos')
|
34 |
+
pic_cwd = os.getcwd()
|
35 |
+
print(pic_cwd)
|
36 |
+
os.listdir(pic_cwd)
|
37 |
+
|
38 |
+
os.chdir(pic_cwd)
|
39 |
+
#os.listdir()
|
40 |
+
list_pictures_files = os.listdir()
|
41 |
+
|
42 |
+
rgb_list = []
|
43 |
+
|
44 |
+
for i in range(len(list_pictures_files)):
|
45 |
+
im = plt.imread(list_pictures_files[i])
|
46 |
+
x = np.arange(len(im[0]))
|
47 |
+
y = np.arange(len(im))
|
48 |
+
channel = np.arange(3)
|
49 |
+
im_xr = xr.DataArray(im,coords={'y': y,'x': x,'channel': channel},dims=["y", "x", "channel"])
|
50 |
+
rgb_list.append(im_xr)
|
51 |
+
#print(str(list_pictures_files[i]) + ' ' +
|
52 |
+
# 'y-Achse: ' + ' ' + str(len(im)) + ', ' +
|
53 |
+
# 'x-Achse: ' + ' ' + str(len(im[0])) + ', ' + 'channel: ' + ' ' + str(len(im[0][0])))
|
54 |
+
#print(' ')
|
55 |
+
|
56 |
+
x = np.arange(len(rgb_list[0][0]))
|
57 |
+
y = np.arange(len(rgb_list[0]))
|
58 |
+
channel = np.arange(3)
|
59 |
+
|
60 |
+
Stndrt = np.array([
|
61 |
+
'Krausnick K',
|
62 |
+
'Glienig K',
|
63 |
+
'Glienig nK',
|
64 |
+
'Halbe K',
|
65 |
+
'Halbe nK',
|
66 |
+
'Hangelsberg K',
|
67 |
+
'Hangelsberg nK',
|
68 |
+
'Spreeau K',
|
69 |
+
'Spreeau nK',
|
70 |
+
'Groß Liebitz K',
|
71 |
+
'Groß Liebitz nK'
|
72 |
+
])
|
73 |
+
|
74 |
+
|
75 |
+
|
76 |
+
|
77 |
+
xar = xr.DataArray(rgb_list,
|
78 |
+
dims=(
|
79 |
+
|
80 |
+
'Standort',
|
81 |
+
"y",
|
82 |
+
"x",
|
83 |
+
"channel")
|
84 |
+
,
|
85 |
+
coords={
|
86 |
+
"x": x,
|
87 |
+
"y": y,
|
88 |
+
"channel": channel,
|
89 |
+
'Standort' : Stndrt,
|
90 |
+
|
91 |
+
},
|
92 |
+
name="rgb")
|
93 |
+
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
+
fisheye = xar.hvplot.rgb(x='x', y='y', bands='channel', data_aspect=1, flip_yaxis=True, xaxis=False, yaxis=None, width=500)
|
98 |
+
|
99 |
+
|
100 |
+
os.chdir(cwd)
|
101 |
+
|
102 |
+
|
103 |
+
df = pd.read_csv(
|
104 |
+
'Hemisphere_totals_holzdeko.csv' ,
|
105 |
+
encoding_errors='ignore',
|
106 |
+
sep=';',
|
107 |
+
#skiprows=[5,10],
|
108 |
+
header=0,
|
109 |
+
decimal=','
|
110 |
+
)
|
111 |
+
|
112 |
+
df['transmission'] = df['transmission'].str.strip('%') # entfernt Character '%'
|
113 |
+
df['transm_gaps'] = df['transm_gaps'].str.strip('%')
|
114 |
+
df['openness'] = df['openness'].str.strip('%')
|
115 |
+
df['openn_gaps'] = df['openn_gaps'].str.strip('%')
|
116 |
+
|
117 |
+
df['transmission'] = df['transmission'].replace(',', '.', regex=True) # wandelt , in . um
|
118 |
+
df['transm_gaps'] = df['transm_gaps'].replace(',', '.', regex=True)
|
119 |
+
df['openness'] = df['openness'].replace(',', '.', regex=True)
|
120 |
+
df['openn_gaps'] = df['openn_gaps'].replace(',', '.', regex=True)
|
121 |
+
|
122 |
+
df['transmission'] = df['transmission'].astype('float64', copy=False)
|
123 |
+
df['transm_gaps'] = df['transm_gaps'].astype('float64', copy=False)
|
124 |
+
df['openness'] = df['openness'].astype('float64', copy=False)
|
125 |
+
df['openn_gaps'] = df['openn_gaps'].astype('float64', copy=False)
|
126 |
+
|
127 |
+
|
128 |
+
|
129 |
+
params = pn.widgets.RadioButtonGroup(
|
130 |
+
name='param',
|
131 |
+
options=['white',
|
132 |
+
'black',
|
133 |
+
'transmission',
|
134 |
+
'transm_gaps',
|
135 |
+
'openness',
|
136 |
+
'openn_gaps'
|
137 |
+
],
|
138 |
+
button_type='success')
|
139 |
+
|
140 |
+
data_inter = df.interactive()
|
141 |
+
|
142 |
+
mean_param = (
|
143 |
+
data_inter
|
144 |
+
.groupby(['Standort', 'k_nk']).mean()
|
145 |
+
|
146 |
+
)
|
147 |
+
|
148 |
+
mean_param_plot = mean_param[params].hvplot(x='Standort', y=params, by='k_nk', kind='bar',
|
149 |
+
title=params, xlabel='Standort')
|
150 |
+
|
151 |
+
|
152 |
+
|
153 |
+
|
154 |
+
|
155 |
+
param_discription = pd.DataFrame({'white': ['white pixels (sky)'],
|
156 |
+
'black' : ['black pixels (canopy)'],
|
157 |
+
'transmission' : ['light transmission in 2D (azimutal equidistant projection of the hemisphere)'],
|
158 |
+
'transm_gaps' : ['large gaps of transmission'],
|
159 |
+
'openness' : ['canopy openness in 3D, also called sky view factor (solid angles of the hemisphere)'],
|
160 |
+
'openn_gaps' : ['large gaps of openness']})
|
161 |
+
|
162 |
+
param_discription = param_discription.interactive()
|
163 |
+
|
164 |
+
param_discription = param_discription[params].values[0]
|
165 |
+
|
166 |
+
|
167 |
+
|
168 |
+
os.chdir(cwd)
|
169 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
170 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
171 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
172 |
+
|
173 |
+
template = pn.template.FastListTemplate(
|
174 |
+
title='Auswertung Hemisfere',
|
175 |
+
sidebar=[hd_logo,
|
176 |
+
pn.pane.Markdown("## Einstellungen"),
|
177 |
+
#'Standort',Stndrt,
|
178 |
+
#'gekalkt/ungekalkt', yaxis,
|
179 |
+
lfe_logo,
|
180 |
+
fnr_logo
|
181 |
+
#'Boden',
|
182 |
+
#'Gekalkt/ungekalkt', yaxis,
|
183 |
+
],
|
184 |
+
main=[pn.pane.Markdown("## Hemisfere"),
|
185 |
+
fisheye,#.panel(),
|
186 |
+
#params,
|
187 |
+
param_discription,
|
188 |
+
mean_param_plot.panel(),
|
189 |
+
|
190 |
+
#accent_base_color="#88d8b0",
|
191 |
+
#header_background="#88d8b0",
|
192 |
+
])
|
193 |
+
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
template.servable();
|
198 |
+
|
199 |
+
print('fertig!')
|
200 |
+
# To launch this dashboard as a web server, we can simply run
|
201 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\hemisfer
|
202 |
+
|
203 |
+
# panel serve 2023_02_10_hemi_dashboard.ipynb --autoreload
|
Hemisphere_totals_holzdeko.csv
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Standort;k_nk;white;black;transmission;transm_gaps;openness;openn_gaps
|
2 |
+
Glienig;k;44692;105485;26,90%;7,38%;28,50%;9,74%
|
3 |
+
Glienig;nk;44282;105895;26,10%;10,50%;27,80%;16,10%
|
4 |
+
Gro� Liebitz;k;110364;39813;70,80%;39,50%;72,70%;55,50%
|
5 |
+
Gro� Liebitz;nk;109132;41045;69,10%;41,10%;71,50%;62,40%
|
6 |
+
Halbe;k;37387;112790;21,70%;2,24%;23,30%;3,27%
|
7 |
+
Halbe;nk;37146;113031;21,00%;2,02%;22,70%;2,21%
|
8 |
+
Hangelsberg;k;33137;117040;18,70%;2,76%;20,30%;3,23%
|
9 |
+
Hangelsberg;nk;35564;114613;20,50%;2,03%;22,10%;2,66%
|
10 |
+
Spreeau;k;50361;99816;30,10%;7,96%;31,90%;9,67%
|
11 |
+
Spreeau;nk;54555;95622;32,70%;5,83%;34,60%;6,63%
|
12 |
+
Krausnick;k;39726;110451;23,00%;8,80%;24,80%;11,70%
|
13 |
+
Krausnick;nk;;;;;;
|
LFE_Logo.png
ADDED
Luftfeuchte.py
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Fri Mar 3 12:12:35 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import numpy as np
|
10 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
11 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
12 |
+
import holoviews as hv
|
13 |
+
|
14 |
+
pn.extension(sizing_mode="stretch_width")
|
15 |
+
|
16 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
17 |
+
from bokeh.models.formatters import DatetimeTickFormatter
|
18 |
+
formatter = DatetimeTickFormatter(months='%b %Y') # wird in .hvplot benötigt für x-achse!
|
19 |
+
|
20 |
+
air_hum = pd.read_csv(r'df_air_hum.csv', sep=',',
|
21 |
+
header=0,
|
22 |
+
#skiprows=[1],
|
23 |
+
decimal=',',
|
24 |
+
na_values=('#-INF', '#NAN'))
|
25 |
+
|
26 |
+
air_hum.index = pd.to_datetime(air_hum['Date'], format='%Y.%m.%d %H:%M:%S')
|
27 |
+
#air_hum.index.names = ['Date']
|
28 |
+
air_hum = air_hum.drop(['Date'], axis=1)
|
29 |
+
air_hum['hum'] = air_hum['hum'].astype(np.float64, copy=True, errors='ignore')
|
30 |
+
|
31 |
+
air_hum = air_hum.round(1)
|
32 |
+
|
33 |
+
|
34 |
+
|
35 |
+
air_date_slider = pn.widgets.DateRangeSlider(name='Date', start=air_hum.index.min(), end=air_hum.index.max())
|
36 |
+
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success')
|
37 |
+
air_date_slider
|
38 |
+
|
39 |
+
air_hum_inter = air_hum.interactive()
|
40 |
+
|
41 |
+
air_hum_inter = (
|
42 |
+
air_hum_inter[
|
43 |
+
(air_hum_inter.Standort == Stndrt) &
|
44 |
+
(air_hum_inter.index >= air_date_slider.param.value_start) &
|
45 |
+
(air_hum_inter.index <= air_date_slider.param.value_end)
|
46 |
+
|
47 |
+
])
|
48 |
+
|
49 |
+
def lin_reg_hum(dfx,dfy, date):
|
50 |
+
# Formel für regres-gerade: y= alpha + b * x
|
51 |
+
# https://www.crashkurs-statistik.de/einfache-lineare-regression/
|
52 |
+
|
53 |
+
lin_df = pd.DataFrame({'Date' : date,
|
54 |
+
'Luftfeuchte' : dfy,
|
55 |
+
'x-x.mean' : dfx-dfx.mean(),
|
56 |
+
'y-y.mean' : dfy-dfy.mean(),
|
57 |
+
'(x-x.mean) * (y-y.mean)': (dfx-dfx.mean()) * (dfy-dfy.mean()),
|
58 |
+
'(x-x.mean)²' : (dfx-dfx.mean()) * (dfx-dfx.mean())
|
59 |
+
})
|
60 |
+
|
61 |
+
b = lin_df['(x-x.mean) * (y-y.mean)'].sum()/ lin_df['(x-x.mean)²'].sum()
|
62 |
+
|
63 |
+
alpha = dfy.mean() - b * dfx.mean()
|
64 |
+
|
65 |
+
lin_df['Lineare Regression'] = round(alpha + b * dfx,2)
|
66 |
+
|
67 |
+
lin_plot = lin_df.hvplot(x='Date',
|
68 |
+
xlabel='Datum',
|
69 |
+
title=Stndrt,
|
70 |
+
y=['Luftfeuchte', 'Lineare Regression'],
|
71 |
+
ylabel='rel Luftfeuchte [%]',
|
72 |
+
color=PALETTE,
|
73 |
+
line_width=0.5,
|
74 |
+
xformatter=formatter)
|
75 |
+
|
76 |
+
SQE = ((lin_df['Lineare Regression']-dfy.mean())*(lin_df['Lineare Regression']-dfy.mean())).sum()
|
77 |
+
|
78 |
+
SQT = (lin_df['y-y.mean'] * lin_df['y-y.mean']).sum()
|
79 |
+
|
80 |
+
R_Wert = round(SQE/SQT,2)
|
81 |
+
|
82 |
+
|
83 |
+
mean = round(dfy.mean(),2)
|
84 |
+
median = dfy.median()
|
85 |
+
maxm = dfy.max()
|
86 |
+
minm = dfy.min()
|
87 |
+
anz = dfy.count()
|
88 |
+
|
89 |
+
monitor_df = pd.DataFrame({'Standort' : [Stndrt.value],
|
90 |
+
'von' : [air_date_slider.value[0]],
|
91 |
+
'bis' : [air_date_slider.value[1]],
|
92 |
+
'Mittelwert' : [mean],
|
93 |
+
'Median' : [median],
|
94 |
+
'Maximum' : [maxm],
|
95 |
+
'Minimum' : [minm],
|
96 |
+
'Anzahl' : [anz],
|
97 |
+
'R²' : [R_Wert]
|
98 |
+
|
99 |
+
})
|
100 |
+
|
101 |
+
return pn.Column(lin_plot, monitor_df)
|
102 |
+
|
103 |
+
|
104 |
+
|
105 |
+
def callback_hum(air_hum_inter):
|
106 |
+
y = air_hum_inter.hum
|
107 |
+
x = air_hum_inter['Unnamed: 0']
|
108 |
+
return pn.Column(lin_reg_hum(x,y, air_hum_inter.index))
|
109 |
+
|
110 |
+
|
111 |
+
airhumplot = air_hum_inter.pipe(callback_hum)
|
112 |
+
|
113 |
+
airhumplot
|
114 |
+
|
115 |
+
|
116 |
+
hum_glienig = pd.DataFrame({'Glienig': air_hum.loc[air_hum['Standort'] == 'Glienig']['hum']},
|
117 |
+
index = air_hum.loc[air_hum['Standort'] == 'Glienig'].index)
|
118 |
+
hum_grlieb = pd.DataFrame({'Groß Liebitz': air_hum.loc[air_hum['Standort'] == 'Groß Liebitz']['hum']},
|
119 |
+
index = air_hum.loc[air_hum['Standort'] == 'Groß Liebitz'].index)
|
120 |
+
hum_halbe = pd.DataFrame({'Halbe' : air_hum.loc[air_hum['Standort'] == 'Halbe']['hum']},
|
121 |
+
index= air_hum.loc[air_hum['Standort'] == 'Halbe'].index)
|
122 |
+
hum_hberg = pd.DataFrame({'Hangelsberg' : air_hum.loc[air_hum['Standort'] == 'Hangelsberg']['hum']},
|
123 |
+
index= air_hum.loc[air_hum['Standort'] == 'Hangelsberg'].index)
|
124 |
+
hum_kraunick = pd.DataFrame({'Krausnick' : air_hum.loc[air_hum['Standort'] == 'Krausnick']['hum']},
|
125 |
+
index= air_hum.loc[air_hum['Standort'] == 'Krausnick'].index)
|
126 |
+
hum_spreeau = pd.DataFrame({'Spreeau' : air_hum.loc[air_hum['Standort'] == 'Spreeau']['hum']},
|
127 |
+
index= air_hum.loc[air_hum['Standort'] == 'Spreeau'].index)
|
128 |
+
air_hum_hist = pd.concat([hum_glienig,hum_grlieb,hum_halbe,hum_hberg,hum_kraunick,hum_spreeau])
|
129 |
+
|
130 |
+
|
131 |
+
|
132 |
+
|
133 |
+
dfi_hum = air_hum_hist.interactive()
|
134 |
+
|
135 |
+
filtered = dfi_hum[
|
136 |
+
(dfi_hum.index >= air_date_slider.param.value_start) &
|
137 |
+
(dfi_hum.index <= air_date_slider.param.value_end)]
|
138 |
+
|
139 |
+
plot_air_humhist = filtered.hvplot(y=['Glienig',
|
140 |
+
'Groß Liebitz',
|
141 |
+
'Halbe',
|
142 |
+
'Hangelsberg',
|
143 |
+
'Krausnick',
|
144 |
+
'Spreeau'],
|
145 |
+
kind='hist',
|
146 |
+
responsive=True,
|
147 |
+
min_height=300,
|
148 |
+
xlabel='rel Luftfeuchte[%]',
|
149 |
+
alpha=0.5)
|
150 |
+
|
151 |
+
plot_air_humhist
|
152 |
+
|
153 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
154 |
+
hd_logo
|
155 |
+
|
156 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
157 |
+
|
158 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
159 |
+
|
160 |
+
template = pn.template.FastListTemplate(
|
161 |
+
title='Holzdeko Dashboard',
|
162 |
+
sidebar=[hd_logo,
|
163 |
+
pn.pane.Markdown("## Einstellungen"),
|
164 |
+
'Standort',Stndrt,
|
165 |
+
lfe_logo,
|
166 |
+
fnr_logo
|
167 |
+
],
|
168 |
+
main=[pn.pane.Markdown("## Relative Luftfeuchte"),
|
169 |
+
air_date_slider,
|
170 |
+
airhumplot.panel(),
|
171 |
+
plot_air_humhist # LUFT
|
172 |
+
#accent_base_color="#88d8b0",
|
173 |
+
#header_background="#88d8b0",
|
174 |
+
])
|
175 |
+
|
176 |
+
|
177 |
+
|
178 |
+
|
179 |
+
template.servable();
|
180 |
+
|
181 |
+
#print('fertig!')
|
182 |
+
# To launch this dashboard as a web server, we can simply run
|
183 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\soil_air\
|
184 |
+
# panel serve 20230303_air_hum_docker.ipynb --autoreload
|
Lufttemperatur.py
ADDED
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Fri Feb 24 15:24:06 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
10 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
11 |
+
import holoviews as hv
|
12 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
13 |
+
|
14 |
+
|
15 |
+
hv.extension('bokeh')
|
16 |
+
#pn.extension('tabulator')
|
17 |
+
|
18 |
+
pn.extension(sizing_mode="stretch_width")
|
19 |
+
#pd.set_option("precision", 0)
|
20 |
+
|
21 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
22 |
+
ACCENT_BASE_COLOR = PALETTE[0]
|
23 |
+
|
24 |
+
#import time
|
25 |
+
#start = time.time()
|
26 |
+
#print('load data')
|
27 |
+
|
28 |
+
import numpy as np
|
29 |
+
|
30 |
+
from math import pi
|
31 |
+
|
32 |
+
from bokeh.palettes import Category20c, Category20
|
33 |
+
from bokeh.plotting import figure
|
34 |
+
from bokeh.transform import cumsum
|
35 |
+
from bokeh.layouts import row
|
36 |
+
from bokeh.models.formatters import DatetimeTickFormatter
|
37 |
+
formatter = DatetimeTickFormatter(months='%b %Y') # wird in .hvplot benötigt für x-achse!
|
38 |
+
|
39 |
+
|
40 |
+
air_temp = pd.read_csv(r'df_air_temp.csv', sep=',',
|
41 |
+
header=0,
|
42 |
+
#skiprows=[1],
|
43 |
+
decimal=',',
|
44 |
+
#dtype={'temp': np.float64},
|
45 |
+
na_values=('#-INF', '#NAN'))
|
46 |
+
|
47 |
+
air_temp.index = pd.to_datetime(air_temp['Date'], format='%Y.%m.%d %H:%M:%S')
|
48 |
+
|
49 |
+
air_temp = air_temp.drop(['Date'], axis=1)
|
50 |
+
air_temp['temp'] = air_temp['temp'].astype(np.float64, copy=True, errors='ignore')
|
51 |
+
air_temp = air_temp.round(1)
|
52 |
+
|
53 |
+
|
54 |
+
air_date_slider = pn.widgets.DateRangeSlider(name='Date', start=air_temp.index.min(), end=air_temp.index.max())
|
55 |
+
|
56 |
+
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success')
|
57 |
+
|
58 |
+
air_temp_inter = air_temp.interactive()
|
59 |
+
|
60 |
+
air_temp_inter = (
|
61 |
+
air_temp_inter[
|
62 |
+
(air_temp_inter.Standort == Stndrt) &
|
63 |
+
(air_temp_inter.index >= air_date_slider.param.value_start) &
|
64 |
+
(air_temp_inter.index <= air_date_slider.param.value_end)
|
65 |
+
|
66 |
+
])
|
67 |
+
|
68 |
+
|
69 |
+
def lin_reg(dfx,dfy, date):
|
70 |
+
# Formel für regres-gerade: y= alpha + b * x
|
71 |
+
# https://www.crashkurs-statistik.de/einfache-lineare-regression/
|
72 |
+
|
73 |
+
lin_df = pd.DataFrame({'Date' : date,
|
74 |
+
'Temperatur' : dfy,
|
75 |
+
'x-x.mean' : dfx-dfx.mean(),
|
76 |
+
'y-y.mean' : dfy-dfy.mean(),
|
77 |
+
'(x-x.mean) * (y-y.mean)': (dfx-dfx.mean()) * (dfy-dfy.mean()),
|
78 |
+
'(x-x.mean)²' : (dfx-dfx.mean()) * (dfx-dfx.mean()),})
|
79 |
+
|
80 |
+
b = lin_df['(x-x.mean) * (y-y.mean)'].sum()/ lin_df['(x-x.mean)²'].sum()
|
81 |
+
|
82 |
+
alpha = dfy.mean() - b * dfx.mean()
|
83 |
+
|
84 |
+
lin_df['Lineare Regression'] = round(alpha + b * dfx,2)
|
85 |
+
|
86 |
+
lin_plot = lin_df.hvplot(x='Date',
|
87 |
+
xlabel='Datum',
|
88 |
+
title=Stndrt,
|
89 |
+
y=['Temperatur', 'Lineare Regression'],
|
90 |
+
ylabel='Lufttemperatur [°C]',
|
91 |
+
color=PALETTE,
|
92 |
+
line_width=0.5,
|
93 |
+
xformatter=formatter)
|
94 |
+
|
95 |
+
SQE = ((lin_df['Lineare Regression']-dfy.mean())*(lin_df['Lineare Regression']-dfy.mean())).sum()
|
96 |
+
|
97 |
+
SQT = (lin_df['y-y.mean'] * lin_df['y-y.mean']).sum()
|
98 |
+
|
99 |
+
R_Wert = round(SQE/SQT,2)
|
100 |
+
|
101 |
+
|
102 |
+
mean = round(dfy.mean(),2)
|
103 |
+
median = dfy.median()
|
104 |
+
maxm = dfy.max()
|
105 |
+
minm = dfy.min()
|
106 |
+
anz = dfy.count()
|
107 |
+
|
108 |
+
monitor_df = pd.DataFrame({'Standort' : [Stndrt.value],
|
109 |
+
'von' : [air_date_slider.value[0]],
|
110 |
+
'bis' : [air_date_slider.value[1]],
|
111 |
+
'Mittelwert' : [mean],
|
112 |
+
'Median' : [median],
|
113 |
+
'Maximum' : [maxm],
|
114 |
+
'Minimum' : [minm],
|
115 |
+
'Anzahl' : [anz],
|
116 |
+
'R²' : [R_Wert]
|
117 |
+
|
118 |
+
})
|
119 |
+
|
120 |
+
return pn.Column(lin_plot, monitor_df)
|
121 |
+
|
122 |
+
|
123 |
+
|
124 |
+
def callback(air_temp_inter):
|
125 |
+
y = air_temp_inter.temp
|
126 |
+
x = air_temp_inter['Unnamed: 0']
|
127 |
+
return pn.Column(lin_reg(x,y, air_temp_inter.index))
|
128 |
+
|
129 |
+
|
130 |
+
airtempplot = air_temp_inter.pipe(callback)
|
131 |
+
|
132 |
+
|
133 |
+
|
134 |
+
|
135 |
+
temp_glienig = pd.DataFrame({'Glienig': air_temp.loc[air_temp['Standort'] == 'Glienig']['temp']},
|
136 |
+
index = air_temp.loc[air_temp['Standort'] == 'Glienig'].index)
|
137 |
+
temp_grlieb = pd.DataFrame({'Groß Liebitz': air_temp.loc[air_temp['Standort'] == 'Groß Liebitz']['temp']},
|
138 |
+
index = air_temp.loc[air_temp['Standort'] == 'Groß Liebitz'].index)
|
139 |
+
temp_halbe = pd.DataFrame({'Halbe' : air_temp.loc[air_temp['Standort'] == 'Halbe']['temp']},
|
140 |
+
index= air_temp.loc[air_temp['Standort'] == 'Halbe'].index)
|
141 |
+
temp_hberg = pd.DataFrame({'Hangelsberg' : air_temp.loc[air_temp['Standort'] == 'Hangelsberg']['temp']},
|
142 |
+
index= air_temp.loc[air_temp['Standort'] == 'Hangelsberg'].index)
|
143 |
+
temp_krausnick = pd.DataFrame({'Krausnick' : air_temp.loc[air_temp['Standort'] == 'Krausnick']['temp']},
|
144 |
+
index= air_temp.loc[air_temp['Standort'] == 'Krausnick'].index)
|
145 |
+
temp_spreeau = pd.DataFrame({'Spreeau' : air_temp.loc[air_temp['Standort'] == 'Spreeau']['temp']},
|
146 |
+
index= air_temp.loc[air_temp['Standort'] == 'Spreeau'].index)
|
147 |
+
|
148 |
+
air_temp_hist = pd.concat([temp_glienig,temp_grlieb,temp_halbe,temp_hberg,temp_krausnick,temp_spreeau])
|
149 |
+
|
150 |
+
dfi_temp = air_temp_hist.interactive()
|
151 |
+
|
152 |
+
filtered = dfi_temp[
|
153 |
+
(dfi_temp.index >= air_date_slider.param.value_start) &
|
154 |
+
(dfi_temp.index <= air_date_slider.param.value_end)]
|
155 |
+
|
156 |
+
plot_air_temphist = filtered.hvplot(y=['Glienig',
|
157 |
+
'Groß Liebitz',
|
158 |
+
'Halbe',
|
159 |
+
'Hangelsberg',
|
160 |
+
'Krausnick',
|
161 |
+
'Spreeau'], kind='hist', responsive=True, min_height=300, xlabel='Lufttemperatur', alpha=0.5)
|
162 |
+
|
163 |
+
|
164 |
+
|
165 |
+
import os
|
166 |
+
|
167 |
+
|
168 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
169 |
+
hd_logo
|
170 |
+
|
171 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
172 |
+
|
173 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
174 |
+
|
175 |
+
|
176 |
+
template = pn.template.FastListTemplate(
|
177 |
+
title='Holzdeko Dashboard',
|
178 |
+
sidebar=[hd_logo,
|
179 |
+
pn.pane.Markdown("## Einstellungen"),
|
180 |
+
'Standort',Stndrt,
|
181 |
+
lfe_logo,
|
182 |
+
fnr_logo
|
183 |
+
],
|
184 |
+
main=[pn.pane.Markdown("## Luft Temperaturdaten"),
|
185 |
+
air_date_slider,
|
186 |
+
airtempplot.panel(),
|
187 |
+
plot_air_temphist,
|
188 |
+
|
189 |
+
|
190 |
+
|
191 |
+
|
192 |
+
|
193 |
+
#accent_base_color="#88d8b0",
|
194 |
+
#header_background="#88d8b0",
|
195 |
+
])
|
196 |
+
|
197 |
+
|
198 |
+
|
199 |
+
|
200 |
+
template.servable();
|
Masseverlust.py
ADDED
@@ -0,0 +1,450 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Thu Mar 9 14:48:52 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import hvplot
|
10 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
11 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
12 |
+
import holoviews as hv
|
13 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
14 |
+
import panel as pn
|
15 |
+
|
16 |
+
from bokeh.models import ColumnDataSource, PrintfTickFormatter, FuncTickFormatter, LabelSet
|
17 |
+
from bokeh.palettes import GnBu3, OrRd3
|
18 |
+
from bokeh.plotting import figure, show, output_notebook, output_file, save
|
19 |
+
from bokeh.layouts import row
|
20 |
+
from bokeh.io import curdoc
|
21 |
+
|
22 |
+
|
23 |
+
|
24 |
+
hv.extension('bokeh')
|
25 |
+
pn.extension('tabulator')
|
26 |
+
|
27 |
+
pn.extension(sizing_mode="stretch_width")
|
28 |
+
#pd.set_option("precision", 0)
|
29 |
+
|
30 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
31 |
+
ACCENT_BASE_COLOR = PALETTE[0]
|
32 |
+
|
33 |
+
import time
|
34 |
+
start = time.time()
|
35 |
+
print('load data')
|
36 |
+
|
37 |
+
import numpy as np
|
38 |
+
|
39 |
+
Stndrt_button = pn.widgets.RadioButtonGroup(
|
40 |
+
name='Standort',
|
41 |
+
options=['Glienig', 'Groß Liebitz', 'Halbe', 'Krausnick', 'Hangelsberg', 'Spreeau'],
|
42 |
+
button_type = 'success'
|
43 |
+
)
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
mpa = pd.read_excel('2023_01_30_Mittelwerte_Masseverlust.xlsx',
|
48 |
+
header=5,
|
49 |
+
#decimal=','
|
50 |
+
)
|
51 |
+
|
52 |
+
|
53 |
+
def create_df(standort):
|
54 |
+
name = str(standort)
|
55 |
+
|
56 |
+
tiefen = [ '40-50','30-40', '20-30', '10-20', '0-10', '-10-0']
|
57 |
+
zeitpunkt = ['März 21', 'Oktober 21', 'Oktober 22']
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
mrz21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'Kalk'].loc[mpa['bau'] == '2021-03-01'][['50-60.1',
|
62 |
+
'40-50.1',
|
63 |
+
'30-40.1',
|
64 |
+
'20-30.1',
|
65 |
+
'10-20.1',
|
66 |
+
'0-10.1']].values[0]
|
67 |
+
|
68 |
+
okt21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'Kalk'].loc[mpa['bau'] == '2021-10-01'][['50-60.1',
|
69 |
+
'40-50.1',
|
70 |
+
'30-40.1',
|
71 |
+
'20-30.1',
|
72 |
+
'10-20.1',
|
73 |
+
'0-10.1']].values[0]
|
74 |
+
|
75 |
+
okt22 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'Kalk'].loc[mpa['bau'] == '2022-10-01'][['50-60.1',
|
76 |
+
'40-50.1',
|
77 |
+
'30-40.1',
|
78 |
+
'20-30.1',
|
79 |
+
'10-20.1',
|
80 |
+
'0-10.1']].values[0]
|
81 |
+
|
82 |
+
kiefer_k = pd.DataFrame({'tiefen' : tiefen,
|
83 |
+
'10 Mon' : mrz21,
|
84 |
+
'18 Mon' : okt21,
|
85 |
+
'28 Mon' : okt22})
|
86 |
+
|
87 |
+
kiefer_k_label = pd.DataFrame({'tiefen' : tiefen,
|
88 |
+
'10 Mon' : mrz21,
|
89 |
+
'18 Mon' : okt21,
|
90 |
+
'28 Mon' : okt22})
|
91 |
+
|
92 |
+
|
93 |
+
|
94 |
+
kiefer_k['28 Mon'] = kiefer_k['28 Mon']-kiefer_k['18 Mon']
|
95 |
+
kiefer_k['18 Mon'] = kiefer_k['18 Mon']-kiefer_k['10 Mon']
|
96 |
+
|
97 |
+
mrz21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'Kalk'].loc[mpa['bau'] == '2021-03-01'][['50-60.3',
|
98 |
+
'40-50.3',
|
99 |
+
'30-40.3',
|
100 |
+
'20-30.3',
|
101 |
+
'10-20.3',
|
102 |
+
'0-10.3']].values[0]
|
103 |
+
|
104 |
+
|
105 |
+
okt21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'Kalk'].loc[mpa['bau'] == '2021-10-01'][['50-60.3',
|
106 |
+
'40-50.3',
|
107 |
+
'30-40.3',
|
108 |
+
'20-30.3',
|
109 |
+
'10-20.3',
|
110 |
+
'0-10.3']].values[0]
|
111 |
+
|
112 |
+
okt22 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'Kalk'].loc[mpa['bau'] == '2022-10-01'][['50-60.3',
|
113 |
+
'40-50.3',
|
114 |
+
'30-40.3',
|
115 |
+
'20-30.3',
|
116 |
+
'10-20.3',
|
117 |
+
'0-10.3']].values[0]
|
118 |
+
|
119 |
+
buche_k = pd.DataFrame({'tiefen' : tiefen,
|
120 |
+
'10 Mon' : mrz21,
|
121 |
+
'18 Mon' : okt21,
|
122 |
+
'28 Mon' : okt22})
|
123 |
+
|
124 |
+
buche_k_label = pd.DataFrame({'tiefen' : tiefen,
|
125 |
+
'10 Mon' : mrz21,
|
126 |
+
'18 Mon' : okt21,
|
127 |
+
'28 Mon' : okt22})
|
128 |
+
|
129 |
+
buche_k['28 Mon'] = buche_k['28 Mon']-buche_k['18 Mon']
|
130 |
+
buche_k['18 Mon'] = buche_k['18 Mon']-buche_k['10 Mon']
|
131 |
+
|
132 |
+
buche_k[['10 Mon', '18 Mon', '28 Mon']] = buche_k[['10 Mon', '18 Mon', '28 Mon']]*-1
|
133 |
+
|
134 |
+
|
135 |
+
|
136 |
+
|
137 |
+
|
138 |
+
|
139 |
+
|
140 |
+
########################################## K E I N K A L K (ohne Kalk) ############################################################################
|
141 |
+
mrz21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'ohne Kalk'].loc[mpa['bau'] == '2021-03-01'][['50-60.1',
|
142 |
+
'40-50.1',
|
143 |
+
'30-40.1',
|
144 |
+
'20-30.1',
|
145 |
+
'10-20.1',
|
146 |
+
'0-10.1']].values[0]
|
147 |
+
|
148 |
+
okt21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'ohne Kalk'].loc[mpa['bau'] == '2021-10-01'][['50-60.1',
|
149 |
+
'40-50.1',
|
150 |
+
'30-40.1',
|
151 |
+
'20-30.1',
|
152 |
+
'10-20.1',
|
153 |
+
'0-10.1']].values[0]
|
154 |
+
|
155 |
+
okt22 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'ohne Kalk'].loc[mpa['bau'] == '2022-10-01'][['50-60.1',
|
156 |
+
'40-50.1',
|
157 |
+
'30-40.1',
|
158 |
+
'20-30.1',
|
159 |
+
'10-20.1',
|
160 |
+
'0-10.1']].values[0]
|
161 |
+
|
162 |
+
kiefer_nk = pd.DataFrame({'tiefen' : tiefen,
|
163 |
+
'10 Mon' : mrz21,
|
164 |
+
'18 Mon' : okt21,
|
165 |
+
'28 Mon' : okt22})
|
166 |
+
|
167 |
+
kiefer_nk_label = pd.DataFrame({'tiefen' : tiefen,
|
168 |
+
'10 Mon' : mrz21,
|
169 |
+
'18 Mon' : okt21,
|
170 |
+
'28 Mon' : okt22})
|
171 |
+
|
172 |
+
|
173 |
+
|
174 |
+
|
175 |
+
kiefer_nk['28 Mon'] = kiefer_nk['28 Mon']-kiefer_nk['18 Mon']
|
176 |
+
kiefer_nk['18 Mon'] = kiefer_nk['18 Mon']-kiefer_nk['10 Mon']
|
177 |
+
|
178 |
+
|
179 |
+
mrz21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'ohne Kalk'].loc[mpa['bau'] == '2021-03-01'][['50-60.3',
|
180 |
+
'40-50.3',
|
181 |
+
'30-40.3',
|
182 |
+
'20-30.3',
|
183 |
+
'10-20.3',
|
184 |
+
'0-10.3']].values[0]
|
185 |
+
|
186 |
+
|
187 |
+
okt21 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'ohne Kalk'].loc[mpa['bau'] == '2021-10-01'][['50-60.3',
|
188 |
+
'40-50.3',
|
189 |
+
'30-40.3',
|
190 |
+
'20-30.3',
|
191 |
+
'10-20.3',
|
192 |
+
'0-10.3']].values[0]
|
193 |
+
|
194 |
+
okt22 = mpa.loc[mpa['Bestand'] == standort].loc[mpa['Kalk?'] == 'ohne Kalk'].loc[mpa['bau'] == '2022-10-01'][['50-60.3',
|
195 |
+
'40-50.3',
|
196 |
+
'30-40.3',
|
197 |
+
'20-30.3',
|
198 |
+
'10-20.3',
|
199 |
+
'0-10.3']].values[0]
|
200 |
+
|
201 |
+
buche_nk = pd.DataFrame({'tiefen' : tiefen,
|
202 |
+
'10 Mon' : mrz21,
|
203 |
+
'18 Mon' : okt21,
|
204 |
+
'28 Mon' : okt22})
|
205 |
+
|
206 |
+
buche_nk_label = pd.DataFrame({'tiefen' : tiefen,
|
207 |
+
'10 Mon' : mrz21,
|
208 |
+
'18 Mon' : okt21,
|
209 |
+
'28 Mon' : okt22})
|
210 |
+
|
211 |
+
|
212 |
+
buche_nk['28 Mon'] = buche_nk['28 Mon']-buche_nk['18 Mon']
|
213 |
+
buche_nk['18 Mon'] = buche_nk['18 Mon']-buche_nk['10 Mon']
|
214 |
+
|
215 |
+
buche_nk[['10 Mon', '18 Mon', '28 Mon']] = buche_nk[['10 Mon', '18 Mon', '28 Mon']]*-1
|
216 |
+
|
217 |
+
######################################################################################################################
|
218 |
+
|
219 |
+
return buche_k.round(1), kiefer_k.round(1), buche_nk.round(1), kiefer_nk.round(1), buche_k_label.round(1), kiefer_k_label.round(1), buche_nk_label.round(1), kiefer_nk_label.round(1), name
|
220 |
+
|
221 |
+
|
222 |
+
|
223 |
+
def plot(df):
|
224 |
+
curdoc().clear()
|
225 |
+
|
226 |
+
tiefen = [ '40-50','30-40', '20-30', '10-20', '0-10', '-10-0']
|
227 |
+
zeitpunkt = ['10 Mon', '18 Mon', '28 Mon']
|
228 |
+
|
229 |
+
hoehe = 500
|
230 |
+
breite = 600
|
231 |
+
|
232 |
+
plot_k = figure(y_range=tiefen, height=hoehe,width=breite, x_range=([-100, 100]), title="Masseverlust Bu/Ki (K)",
|
233 |
+
toolbar_location='left')
|
234 |
+
|
235 |
+
plot_k.xaxis.axis_label = 'Masseverlust [%]'
|
236 |
+
plot_k.yaxis.axis_label = 'Tiefenstufe'
|
237 |
+
#plot_k.image_url(url=['Bodenhorizont_entnahme_pruefkoerper.jpg'],
|
238 |
+
# x=-300,
|
239 |
+
# y=9,
|
240 |
+
# #dw = 100,
|
241 |
+
# #dh = 100,
|
242 |
+
# w=600,
|
243 |
+
# h=10
|
244 |
+
# )
|
245 |
+
|
246 |
+
|
247 |
+
plot_k.hbar_stack(zeitpunkt, y='tiefen', height=0.9, color=GnBu3, source=ColumnDataSource(df[1]),
|
248 |
+
legend_label=["Ki %s" % x for x in zeitpunkt], fill_alpha = 0.7)
|
249 |
+
|
250 |
+
|
251 |
+
plot_k.hbar_stack(zeitpunkt, y='tiefen', height=0.9, color=OrRd3, source=ColumnDataSource(df[0]),
|
252 |
+
legend_label=["Bu %s" % x for x in zeitpunkt], fill_alpha = 0.7)
|
253 |
+
|
254 |
+
|
255 |
+
|
256 |
+
plot_k.xaxis.ticker = [ -100, -75 , -50 , -25 , 0 , 25 , 50 , 75 , 100 ]
|
257 |
+
plot_k.xaxis.major_label_overrides = { -100: '100', -75:' ', -50 : '50', -25 : ' ' , 0 : '0', 25: ' ',50 : '50', 75 : ' ', 100 :'100'}
|
258 |
+
|
259 |
+
|
260 |
+
|
261 |
+
|
262 |
+
plot_k.y_range.range_padding = 0.1
|
263 |
+
plot_k.ygrid.grid_line_color = None
|
264 |
+
plot_k.axis.minor_tick_line_color = None
|
265 |
+
plot_k.outline_line_color = None
|
266 |
+
|
267 |
+
labels = {'x': (
|
268 |
+
list((df[1][zeitpunkt].cumsum(axis=1)['28 Mon'] + 10).to_numpy().flatten()
|
269 |
+
)
|
270 |
+
+ list((df[0][zeitpunkt].cumsum(axis=1)['28 Mon'] -10).to_numpy().flatten()
|
271 |
+
)
|
272 |
+
),
|
273 |
+
|
274 |
+
'y': list(np.array([i+0.5 for i in range(len(tiefen))]))*2,
|
275 |
+
'labels': (
|
276 |
+
list(np.around(df[5][zeitpunkt]['28 Mon'], 2).abs().astype(str).replace('^0$','', regex=True).to_numpy().flatten()
|
277 |
+
)
|
278 |
+
+list(np.around(df[4][zeitpunkt]['28 Mon'], 2).abs().astype(str).replace('^0$','', regex=True).to_numpy().flatten()
|
279 |
+
)
|
280 |
+
)
|
281 |
+
}
|
282 |
+
|
283 |
+
|
284 |
+
labels = LabelSet(x="x", y="y", text='labels', text_font_size="11px", text_color="#555555",
|
285 |
+
source=ColumnDataSource(labels), text_align='center')
|
286 |
+
|
287 |
+
plot_k.add_layout(labels)
|
288 |
+
plot_k.legend.title = df[8]
|
289 |
+
plot_k.legend.title_text_font_style = "bold"
|
290 |
+
plot_k.legend.title_text_font_size = "10px"
|
291 |
+
plot_k.add_layout(plot_k.legend[0], 'right')
|
292 |
+
|
293 |
+
bokeh_k = pn.pane.Bokeh(plot_k)
|
294 |
+
|
295 |
+
|
296 |
+
|
297 |
+
############################## P L O T n_k ##################################################
|
298 |
+
|
299 |
+
plot_nk = figure(y_range=tiefen, height=hoehe,width=breite-150, x_range=([-100, 100]), title="Masseverlust Bu/Ki (nK)",
|
300 |
+
toolbar_location='right', y_axis_location="right")
|
301 |
+
|
302 |
+
|
303 |
+
plot_nk.xaxis.axis_label = 'Masseverlust [%]'
|
304 |
+
plot_nk.yaxis.axis_label = 'Tiefenstufe'
|
305 |
+
|
306 |
+
#plot_nk.image_url(url=['Bodenhorizont_entnahme_pruefkoerper.jpg'],
|
307 |
+
# x=-300,
|
308 |
+
# y=9,
|
309 |
+
# #dw = 100,
|
310 |
+
# #dh = 100,
|
311 |
+
# w=600,
|
312 |
+
# h=10
|
313 |
+
# )
|
314 |
+
|
315 |
+
|
316 |
+
plot_nk.hbar_stack(zeitpunkt, y='tiefen', height=0.9, color=GnBu3, source=ColumnDataSource(df[3]),
|
317 |
+
legend_label=["Ki %s" % x for x in zeitpunkt], fill_alpha = 0.7)
|
318 |
+
|
319 |
+
|
320 |
+
plot_nk.hbar_stack(zeitpunkt, y='tiefen', height=0.9, color=OrRd3, source=ColumnDataSource(df[2]),
|
321 |
+
legend_label=["Bu %s" % x for x in zeitpunkt], fill_alpha = 0.7)
|
322 |
+
|
323 |
+
|
324 |
+
|
325 |
+
plot_nk.xaxis.ticker = [ -100, -75 , -50 , -25 , 0 , 25 , 50 , 75 , 100 ]
|
326 |
+
plot_nk.xaxis.major_label_overrides = { -100: '100', -75:' ', -50 : '50', -25 : ' ' , 0 : '0', 25: ' ',50 : '50', 75 : ' ', 100 :'100'}
|
327 |
+
plot_nk.y_range.range_padding = 0.1
|
328 |
+
plot_nk.ygrid.grid_line_color = None
|
329 |
+
plot_nk.legend.location = (600,100)
|
330 |
+
plot_nk.axis.minor_tick_line_color = None
|
331 |
+
plot_nk.outline_line_color = None
|
332 |
+
|
333 |
+
|
334 |
+
|
335 |
+
labels = {'x': (
|
336 |
+
list((df[3][zeitpunkt].cumsum(axis=1)['28 Mon']+10).to_numpy().flatten())
|
337 |
+
|
338 |
+
+ list((df[2][zeitpunkt].cumsum(axis=1)['28 Mon']-10).to_numpy().flatten())
|
339 |
+
|
340 |
+
),
|
341 |
+
|
342 |
+
'y': list(np.array([i+0.5 for i in range(len(tiefen))]))*2,
|
343 |
+
'labels': (
|
344 |
+
list(np.around(df[7][zeitpunkt]['28 Mon'], 2).abs().astype(str).replace('^0$','', regex=True).to_numpy().flatten()
|
345 |
+
)
|
346 |
+
+list(np.around(df[6][zeitpunkt]['28 Mon'], 2).abs().astype(str).replace('^0$','', regex=True).to_numpy().flatten()
|
347 |
+
)
|
348 |
+
)
|
349 |
+
}
|
350 |
+
|
351 |
+
|
352 |
+
|
353 |
+
labels = LabelSet(x="x", y="y", text='labels', text_font_size="11px", text_color="#555555",
|
354 |
+
source=ColumnDataSource(labels), text_align='center')
|
355 |
+
plot_nk.add_layout(labels)
|
356 |
+
|
357 |
+
bokeh_nk = pn.pane.Bokeh(plot_nk)
|
358 |
+
|
359 |
+
|
360 |
+
return pn.Row(bokeh_k, bokeh_nk)
|
361 |
+
|
362 |
+
|
363 |
+
|
364 |
+
|
365 |
+
|
366 |
+
df_mpa = pd.DataFrame({'Standort' : ['Glienig', 'Groß Liebitz', 'Halbe', 'Krausnick', 'Hangelsberg', 'Spreeau']})
|
367 |
+
|
368 |
+
df_mpa_i = df_mpa.interactive()
|
369 |
+
|
370 |
+
|
371 |
+
df_mpa_pipe = df_mpa_i[
|
372 |
+
(df_mpa_i.Standort == Stndrt_button)
|
373 |
+
]
|
374 |
+
|
375 |
+
|
376 |
+
|
377 |
+
|
378 |
+
glienig = create_df('KVF 3 Glienig')
|
379 |
+
grliebitz = create_df('KVF 4 Groß Liebitz')
|
380 |
+
halbe = create_df('KVF 12 Halbe')
|
381 |
+
krausnick = create_df('KVF 9 Krausnick')
|
382 |
+
hangelsberg = create_df('KVF 10 Hangelsberg')
|
383 |
+
spreeau = create_df('KVF 19 Spreeau')
|
384 |
+
mittelwerte = create_df('Mittelwerte')
|
385 |
+
|
386 |
+
|
387 |
+
plot_mittelwerte = plot(mittelwerte)
|
388 |
+
|
389 |
+
|
390 |
+
|
391 |
+
def callback(df_mpa_pipe):
|
392 |
+
if Stndrt_button.value == 'Groß Liebitz':
|
393 |
+
return plot(grliebitz)
|
394 |
+
if Stndrt_button.value == 'Glienig':
|
395 |
+
return plot(glienig)
|
396 |
+
if Stndrt_button.value == 'Halbe':
|
397 |
+
return plot(halbe)
|
398 |
+
if Stndrt_button.value == 'Krausnick':
|
399 |
+
return plot(krausnick)
|
400 |
+
if Stndrt_button.value == 'Hangelsberg':
|
401 |
+
return plot(hangelsberg)
|
402 |
+
if Stndrt_button.value == 'Spreeau':
|
403 |
+
return plot(spreeau)
|
404 |
+
|
405 |
+
|
406 |
+
|
407 |
+
masseverlust_plot = df_mpa_pipe.pipe(callback)
|
408 |
+
|
409 |
+
|
410 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
411 |
+
hd_logo
|
412 |
+
|
413 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
414 |
+
|
415 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
416 |
+
|
417 |
+
|
418 |
+
|
419 |
+
diagram_text = 'Die Diagramme stellen die zu den 3 Ausbauzeitpunkten ermittelten Masseverluste für die Buche (BU)- und Kiefer (KI)-Prüfkörper in allen 6 Tiefenstufen, auf dem jeweiligen Standort (Fläche) sowie für die Teilflächen gekalkt (K) und ungekalkt (nK) dar. Dabei sind die für die Holzart BU ermittelten Werte ausgehend von der vertikalen Mittellinie nach links in rot/gelb dargestellt und die für die Holzart KI ausgehend von der Mittellinie nach rechts in blau/grün. Die Masseverluste wurden vor Einbau und zu den Ausbauzeitpunkten (an den bei 103° C bis zur Massekonstanz gedarrten Stab-Prüfkörpern) bestimmt und sind auf der Abszisse in Prozent ablesbar.'
|
420 |
+
|
421 |
+
template = pn.template.FastListTemplate(
|
422 |
+
title='Holzdeko Dashboard',
|
423 |
+
sidebar=[hd_logo,
|
424 |
+
pn.pane.Markdown("## Einstellungen"),
|
425 |
+
'Standort',Stndrt_button,
|
426 |
+
#checkbox, # Aktiviert Hintergrundbild
|
427 |
+
lfe_logo,
|
428 |
+
fnr_logo
|
429 |
+
],
|
430 |
+
main=[pn.pane.Markdown("## Masseverlust"),
|
431 |
+
masseverlust_plot,
|
432 |
+
|
433 |
+
pn.pane.Markdown(f'{diagram_text}'),
|
434 |
+
pn.pane.Markdown("## Mittelwerte"),
|
435 |
+
plot_mittelwerte
|
436 |
+
|
437 |
+
#accent_base_color="#88d8b0",
|
438 |
+
#header_background="#88d8b0",
|
439 |
+
])
|
440 |
+
|
441 |
+
|
442 |
+
|
443 |
+
|
444 |
+
template.servable();
|
445 |
+
|
446 |
+
#print('fertig!')
|
447 |
+
# To launch this dashboard as a web server, we can simply run
|
448 |
+
|
449 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\MPA_Masseverlust_docker
|
450 |
+
# panel serve 2023_03_09_MW_MPA.ipynb --autoreload
|
Nied_holzdeko_csv.csv
ADDED
@@ -0,0 +1,1081 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
;Kampagne;MessDat;Menge;FNR + NWP;Standort;Kalk
|
2 |
+
0;11;08.06.2017;19,5;3NE;Glienig;K
|
3 |
+
1;11;08.06.2017;22,5;3NW;Glienig;nK
|
4 |
+
2;11;08.06.2017;43;4NW;Gro� Liebitz;nK
|
5 |
+
3;11;08.06.2017;42;4SE;Gro� Liebitz;K
|
6 |
+
4;11;08.06.2017;17,5;9NE;Krausnick;K
|
7 |
+
5;11;08.06.2017;20;9NW;Krausnick;nK
|
8 |
+
6;11;09.06.2017;22,5;10SE;Hangelsberg;K
|
9 |
+
7;11;09.06.2017;24;10SW;Hangelsberg;nK
|
10 |
+
8;11;09.06.2017;17,5;12NE;Halbe;K
|
11 |
+
9;11;09.06.2017;35;12NW;Halbe;nK
|
12 |
+
10;11;09.06.2017;13;19NE;Spreeau;K
|
13 |
+
11;11;09.06.2017;13;19NW;Spreeau;nK
|
14 |
+
12;12;26.06.2017;9;3NE;Glienig;K
|
15 |
+
13;12;26.06.2017;12;3NW;Glienig;nK
|
16 |
+
14;12;26.06.2017;11,5;4NW;Gro� Liebitz;nK
|
17 |
+
15;12;26.06.2017;9,5;4SE;Gro� Liebitz;K
|
18 |
+
16;12;26.06.2017;10;9NE;Krausnick;K
|
19 |
+
17;12;26.06.2017;12,5;9NW;Krausnick;nK
|
20 |
+
18;12;27.06.2017;45;10SE;Hangelsberg;K
|
21 |
+
19;12;27.06.2017;49;10SW;Hangelsberg;nK
|
22 |
+
20;12;26.06.2017;19,5;12NE;Halbe;K
|
23 |
+
21;12;26.06.2017;27,5;12NW;Halbe;nK
|
24 |
+
22;12;27.06.2017;40,5;19NE;Spreeau;K
|
25 |
+
23;12;27.06.2017;39;19NW;Spreeau;nK
|
26 |
+
24;13;11.07.2017;45;3NE;Glienig;K
|
27 |
+
25;13;11.07.2017;45;3NW;Glienig;nK
|
28 |
+
26;13;11.07.2017;65;4NW;Gro� Liebitz;nK
|
29 |
+
27;13;11.07.2017;68;4SE;Gro� Liebitz;K
|
30 |
+
28;13;11.07.2017;55;9NE;Krausnick;K
|
31 |
+
29;13;11.07.2017;58;9NW;Krausnick;nK
|
32 |
+
30;13;11.07.2017;64;12NE;Halbe;K
|
33 |
+
31;13;11.07.2017;92;12NW;Halbe;nK
|
34 |
+
32;13;10.07.2017;67;10SE;Hangelsberg;K
|
35 |
+
33;13;10.07.2017;73;10SW;Hangelsberg;nK
|
36 |
+
34;13;10.07.2017;80;19NE;Spreeau;K
|
37 |
+
35;13;10.07.2017;88;19NW;Spreeau;nK
|
38 |
+
36;14;01.08.2017;65;3NE;Glienig;K
|
39 |
+
37;14;01.08.2017;72;3NW;Glienig;nK
|
40 |
+
38;14;01.08.2017;132;4NW;Gro� Liebitz;nK
|
41 |
+
39;14;01.08.2017;140;4SE;Gro� Liebitz;K
|
42 |
+
40;14;01.08.2017;72;9NE;Krausnick;K
|
43 |
+
41;14;01.08.2017;85;9NW;Krausnick;nK
|
44 |
+
42;14;02.08.2017;76;10SE;Hangelsberg;K
|
45 |
+
43;14;02.08.2017;78;10SW;Hangelsberg;nK
|
46 |
+
44;25;15.03.2018;21,5;3NE;Glienig;K
|
47 |
+
45;25;15.03.2018;21,5;3NW;Glienig;nK
|
48 |
+
46;25;15.03.2018;25;4NW;Gro� Liebitz;nK
|
49 |
+
47;25;15.03.2018;28;4SE;Gro� Liebitz;K
|
50 |
+
48;25;15.03.2018;23;9NE;Krausnick;K
|
51 |
+
49;25;15.03.2018;18;9NW;Krausnick;nK
|
52 |
+
50;25;14.03.2018;24;10SE;Hangelsberg;K
|
53 |
+
51;25;14.03.2018;29;10SW;Hangelsberg;nK
|
54 |
+
52;25;14.03.2018;19;12NE;Halbe;K
|
55 |
+
53;25;14.03.2018;24;12NW;Halbe;nK
|
56 |
+
54;25;14.03.2018;20;19NE;Spreeau;K
|
57 |
+
55;25;14.03.2018;21;19NW;Spreeau;nK
|
58 |
+
56;26;03.04.2018;12;3NE;Glienig;K
|
59 |
+
57;26;03.04.2018;13;3NW;Glienig;nK
|
60 |
+
58;26;03.04.2018;12;4NW;Gro� Liebitz;nK
|
61 |
+
59;26;03.04.2018;13;4SE;Gro� Liebitz;K
|
62 |
+
60;26;03.04.2018;9;9NE;Krausnick;K
|
63 |
+
61;26;03.04.2018;9;9NW;Krausnick;nK
|
64 |
+
62;26;05.04.2018;21,5;10SE;Hangelsberg;K
|
65 |
+
63;26;05.04.2018;22;10SW;Hangelsberg;nK
|
66 |
+
64;26;05.04.2018;11;12NE;Halbe;K
|
67 |
+
65;26;05.04.2018;14;12NW;Halbe;nK
|
68 |
+
66;26;05.04.2018;22;19NE;Spreeau;K
|
69 |
+
67;26;05.04.2018;22,5;19NW;Spreeau;nK
|
70 |
+
68;27;25.04.2018;19,5;3NE;Glienig;K
|
71 |
+
69;27;25.04.2018;20;3NW;Glienig;nK
|
72 |
+
70;27;25.04.2018;20;4NW;Gro� Liebitz;nK
|
73 |
+
71;27;25.04.2018;16;4SE;Gro� Liebitz;K
|
74 |
+
72;27;25.04.2018;35;9NE;Krausnick;K
|
75 |
+
73;27;25.04.2018;28;9NW;Krausnick;nK
|
76 |
+
74;27;26.04.2018;14;10SE;Hangelsberg;K
|
77 |
+
75;27;26.04.2018;14;10SW;Hangelsberg;nK
|
78 |
+
76;27;26.04.2018;27;12NE;Halbe;K
|
79 |
+
77;27;26.04.2018;43;12NW;Halbe;nK
|
80 |
+
78;27;26.04.2018;17;19NE;Spreeau;K
|
81 |
+
79;27;26.04.2018;14;19NW;Spreeau;nK
|
82 |
+
80;28;17.05.2018;18,5;3NE;Glienig;K
|
83 |
+
81;28;17.05.2018;15,5;3NW;Glienig;nK
|
84 |
+
82;28;17.05.2018;11,5;4NW;Gro� Liebitz;nK
|
85 |
+
83;28;17.05.2018;10,5;4SE;Gro� Liebitz;K
|
86 |
+
84;28;17.05.2018;29;9NE;Krausnick;K
|
87 |
+
85;28;17.05.2018;18;9NW;Krausnick;nK
|
88 |
+
86;28;18.05.2018;15,5;10SE;Hangelsberg;K
|
89 |
+
87;28;18.05.2018;15;10SW;Hangelsberg;nK
|
90 |
+
88;28;17.05.2018;47,5;12NE;Halbe;K
|
91 |
+
89;28;17.05.2018;50;12NW;Halbe;nK
|
92 |
+
90;28;18.05.2018;10;19NE;Spreeau;K
|
93 |
+
91;28;18.05.2018;9;19NW;Spreeau;nK
|
94 |
+
92;29;07.06.2018;42;3NE;Glienig;K
|
95 |
+
93;29;07.06.2018;42;3NW;Glienig;nK
|
96 |
+
94;29;07.06.2018;42;4NW;Gro� Liebitz;nK
|
97 |
+
95;29;07.06.2018;43;4SE;Gro� Liebitz;K
|
98 |
+
96;29;07.06.2018;14;9NE;Krausnick;K
|
99 |
+
97;29;07.06.2018;12;9NW;Krausnick;nK
|
100 |
+
98;29;06.06.2018;5,5;10SE;Hangelsberg;K
|
101 |
+
99;29;06.06.2018;11;10SW;Hangelsberg;nK
|
102 |
+
100;29;06.06.2018;11,5;12NE;Halbe;K
|
103 |
+
101;29;06.06.2018;14;12NW;Halbe;nK
|
104 |
+
102;29;06.06.2018;39;19NE;Spreeau;K
|
105 |
+
103;29;06.06.2018;41;19NW;Spreeau;nK
|
106 |
+
104;30;28.06.2018;6,5;3NE;Glienig;K
|
107 |
+
105;30;28.06.2018;6,5;3NW;Glienig;nK
|
108 |
+
106;30;28.06.2018;55;4NW;Gro� Liebitz;nK
|
109 |
+
107;30;28.06.2018;53;4SE;Gro� Liebitz;K
|
110 |
+
108;30;28.06.2018;12;9NE;Krausnick;K
|
111 |
+
109;30;28.06.2018;8,5;9NW;Krausnick;nK
|
112 |
+
110;30;27.06.2018;6;10SE;Hangelsberg;K
|
113 |
+
111;30;27.06.2018;7;10SW;Hangelsberg;nK
|
114 |
+
112;30;27.06.2018;5;12NE;Halbe;K
|
115 |
+
113;30;27.06.2018;7;12NW;Halbe;nK
|
116 |
+
114;30;27.06.2018;6;19NE;Spreeau;K
|
117 |
+
115;30;27.06.2018;6;19NW;Spreeau;nK
|
118 |
+
116;31;26.07.2018;25;3NE;Glienig;K
|
119 |
+
117;31;26.07.2018;25;3NW;Glienig;nK
|
120 |
+
118;31;26.07.2018;31;4NW;Gro� Liebitz;nK
|
121 |
+
119;31;26.07.2018;25;4SE;Gro� Liebitz;K
|
122 |
+
120;31;26.07.2018;35;9NE;Krausnick;K
|
123 |
+
121;31;26.07.2018;30;9NW;Krausnick;nK
|
124 |
+
122;31;25.07.2018;34;10SE;Hangelsberg;K
|
125 |
+
123;31;25.07.2018;42;10SW;Hangelsberg;nK
|
126 |
+
124;31;25.07.2018;24;12NE;Halbe;K
|
127 |
+
125;31;25.07.2018;35;12NW;Halbe;nK
|
128 |
+
126;31;25.07.2018;31;19NE;Spreeau;K
|
129 |
+
127;14;02.08.2017;135;12NE;Halbe;K
|
130 |
+
128;14;02.08.2017;135;12NW;Halbe;nK
|
131 |
+
129;14;02.08.2017;93;19NE;Spreeau;K
|
132 |
+
130;14;02.08.2017;97;19NW;Spreeau;nK
|
133 |
+
131;15;29.08.2017;37,5;3NE;Glienig;K
|
134 |
+
132;15;29.08.2017;33,5;3NW;Glienig;nK
|
135 |
+
133;15;29.08.2017;49;4NW;Gro� Liebitz;nK
|
136 |
+
134;15;29.08.2017;47;4SE;Gro� Liebitz;K
|
137 |
+
135;15;29.08.2017;40;9NE;Krausnick;K
|
138 |
+
136;15;29.08.2017;45;9NW;Krausnick;nK
|
139 |
+
137;15;30.08.2017;32;10SE;Hangelsberg;K
|
140 |
+
138;15;30.08.2017;41;10SW;Hangelsberg;nK
|
141 |
+
139;15;30.08.2017;57;12NE;Halbe;K
|
142 |
+
140;15;30.08.2017;57;12NW;Halbe;nK
|
143 |
+
141;15;30.08.2017;33,5;19NE;Spreeau;K
|
144 |
+
142;15;30.08.2017;31;19NW;Spreeau;nK
|
145 |
+
143;16;21.09.2017;23,5;3NE;Glienig;K
|
146 |
+
144;16;21.09.2017;25;3NW;Glienig;nK
|
147 |
+
145;16;21.09.2017;51;4NW;Gro� Liebitz;nK
|
148 |
+
146;16;21.09.2017;51;4SE;Gro� Liebitz;K
|
149 |
+
147;16;25.09.2017;27;9NE;Krausnick;K
|
150 |
+
148;16;25.09.2017;30;9NW;Krausnick;nK
|
151 |
+
149;16;26.09.2017;19;10SE;Hangelsberg;K
|
152 |
+
150;16;26.09.2017;23;10SW;Hangelsberg;nK
|
153 |
+
151;16;26.09.2017;7;12NE;Halbe;K
|
154 |
+
152;16;26.09.2017;15,5;12NW;Halbe;nK
|
155 |
+
153;16;25.09.2017;21;19NE;Spreeau;K
|
156 |
+
154;16;25.09.2017;23,5;19NW;Spreeau;nK
|
157 |
+
155;17;12.10.2017;47;3NE;Glienig;K
|
158 |
+
156;17;12.10.2017;50;3NW;Glienig;nK
|
159 |
+
157;17;12.10.2017;45;4NW;Gro� Liebitz;nK
|
160 |
+
158;17;12.10.2017;40;4SE;Gro� Liebitz;K
|
161 |
+
159;17;12.10.2017;37;9NE;Krausnick;K
|
162 |
+
160;17;12.10.2017;40;9NW;Krausnick;nK
|
163 |
+
161;17;13.10.2017;36;19NE;Spreeau;K
|
164 |
+
162;17;13.10.2017;38;19NW;Spreeau;nK
|
165 |
+
163;17;13.10.2017;41;10SE;Hangelsberg;K
|
166 |
+
164;17;13.10.2017;57;10SW;Hangelsberg;nK
|
167 |
+
165;17;13.10.2017;33;12NE;Halbe;K
|
168 |
+
166;17;13.10.2017;34;12NW;Halbe;nK
|
169 |
+
167;18;08.11.2017;33;3NE;Glienig;K
|
170 |
+
168;18;08.11.2017;35;3NW;Glienig;nK
|
171 |
+
169;18;08.11.2017;44;4NW;Gro� Liebitz;nK
|
172 |
+
170;18;08.11.2017;39;4SE;Gro� Liebitz;K
|
173 |
+
171;18;08.11.2017;28;9NE;Krausnick;K
|
174 |
+
172;18;08.11.2017;28;9NW;Krausnick;nK
|
175 |
+
173;18;07.11.2017;58;19NE;Spreeau;K
|
176 |
+
174;18;07.11.2017;69;19NW;Spreeau;nK
|
177 |
+
175;18;07.11.2017;31;10SE;Hangelsberg;K
|
178 |
+
176;18;07.11.2017;41;10SW;Hangelsberg;nK
|
179 |
+
177;18;07.11.2017;54;12NE;Halbe;K
|
180 |
+
178;18;07.11.2017;58;12NW;Halbe;nK
|
181 |
+
179;19;24.11.2017;18;3NE;Glienig;K
|
182 |
+
180;19;24.11.2017;18,5;3NW;Glienig;nK
|
183 |
+
181;19;24.11.2017;20,5;4NW;Gro� Liebitz;nK
|
184 |
+
182;19;24.11.2017;22;4SE;Gro� Liebitz;K
|
185 |
+
183;19;24.11.2017;12,5;9NE;Krausnick;K
|
186 |
+
184;19;24.11.2017;12,5;9NW;Krausnick;nK
|
187 |
+
185;19;23.11.2017;14;10SE;Hangelsberg;K
|
188 |
+
186;19;23.11.2017;15;10SW;Hangelsberg;nK
|
189 |
+
187;19;23.11.2017;10;12NE;Halbe;K
|
190 |
+
188;19;23.11.2017;15;12NW;Halbe;nK
|
191 |
+
189;19;23.11.2017;11;19NE;Spreeau;K
|
192 |
+
190;19;23.11.2017;10;19NW;Spreeau;nK
|
193 |
+
191;20;15.12.2017;35;3NE;Glienig;K
|
194 |
+
192;20;15.12.2017;38;3NW;Glienig;nK
|
195 |
+
193;20;15.12.2017;39;4NW;Gro� Liebitz;nK
|
196 |
+
194;20;15.12.2017;43;4SE;Gro� Liebitz;K
|
197 |
+
195;20;15.12.2017;23,5;9NE;Krausnick;K
|
198 |
+
196;20;15.12.2017;23,5;9NW;Krausnick;nK
|
199 |
+
197;20;18.12.2017;43;10SE;Hangelsberg;K
|
200 |
+
198;20;18.12.2017;43;10SW;Hangelsberg;nK
|
201 |
+
199;20;15.12.2017;29;12NE;Halbe;K
|
202 |
+
200;20;15.12.2017;35;12NW;Halbe;nK
|
203 |
+
201;20;18.12.2017;37;19NE;Spreeau;K
|
204 |
+
202;20;18.12.2017;39;19NW;Spreeau;nK
|
205 |
+
203;21;08.01.2018;27;3NE;Glienig;K
|
206 |
+
204;21;08.01.2018;32;3NW;Glienig;nK
|
207 |
+
205;21;08.01.2018;30;4NW;Gro� Liebitz;nK
|
208 |
+
206;21;08.01.2018;36;4SE;Gro� Liebitz;K
|
209 |
+
207;21;08.01.2018;28;9NE;Krausnick;K
|
210 |
+
208;21;08.01.2018;24;9NW;Krausnick;nK
|
211 |
+
209;21;05.01.2018;25;10SE;Hangelsberg;K
|
212 |
+
210;21;05.01.2018;24;10SW;Hangelsberg;nK
|
213 |
+
211;21;05.01.2018;32;12NE;Halbe;K
|
214 |
+
212;21;05.01.2018;19;12NW;Halbe;nK
|
215 |
+
213;21;08.01.2018;22;19NE;Spreeau;K
|
216 |
+
214;21;05.01.2018;22;19NW;Spreeau;nK
|
217 |
+
215;22;23.01.2018;17;3NE;Glienig;K
|
218 |
+
216;22;23.01.2018;17;3NW;Glienig;nK
|
219 |
+
217;22;23.01.2018;18;4NW;Gro� Liebitz;nK
|
220 |
+
218;22;23.01.2018;21;4SE;Gro� Liebitz;K
|
221 |
+
219;22;23.01.2018;12;9NE;Krausnick;K
|
222 |
+
220;22;23.01.2018;10;9NW;Krausnick;nK
|
223 |
+
221;22;24.01.2018;23;10SE;Hangelsberg;K
|
224 |
+
222;22;24.01.2018;22;10SW;Hangelsberg;nK
|
225 |
+
223;22;24.01.2018;13,5;12NE;Halbe;K
|
226 |
+
224;22;24.01.2018;16,5;12NW;Halbe;nK
|
227 |
+
225;22;24.01.2018;18;19NE;Spreeau;K
|
228 |
+
226;22;24.01.2018;20;19NW;Spreeau;nK
|
229 |
+
227;23;05.02.2018;10;3NE;Glienig;K
|
230 |
+
228;23;05.02.2018;11;3NW;Glienig;nK
|
231 |
+
229;23;05.02.2018;14;4NW;Gro� Liebitz;nK
|
232 |
+
230;23;05.02.2018;11;4SE;Gro� Liebitz;K
|
233 |
+
231;23;05.02.2018;9;9NE;Krausnick;K
|
234 |
+
232;23;05.02.2018;7;9NW;Krausnick;nK
|
235 |
+
233;23;06.02.2018;13;10SE;Hangelsberg;K
|
236 |
+
234;23;06.02.2018;15;10SW;Hangelsberg;nK
|
237 |
+
235;23;06.02.2018;13;12NE;Halbe;K
|
238 |
+
236;23;06.02.2018;9;12NW;Halbe;nK
|
239 |
+
237;23;06.02.2018;6;19NE;Spreeau;K
|
240 |
+
238;23;06.02.2018;5;19NW;Spreeau;nK
|
241 |
+
239;24;20.02.2018;1;3NE;Glienig;K
|
242 |
+
240;24;20.02.2018;1;3NW;Glienig;nK
|
243 |
+
241;24;20.02.2018;1;4NW;Gro� Liebitz;nK
|
244 |
+
242;24;20.02.2018;3,5;4SE;Gro� Liebitz;K
|
245 |
+
243;24;20.02.2018;1;9NE;Krausnick;K
|
246 |
+
244;24;20.02.2018;1;9NW;Krausnick;nK
|
247 |
+
245;24;21.02.2018;2,5;10SE;Hangelsberg;K
|
248 |
+
246;24;21.02.2018;3;10SW;Hangelsberg;nK
|
249 |
+
247;24;21.02.2018;1;12NE;Halbe;K
|
250 |
+
248;24;21.02.2018;1;12NW;Halbe;nK
|
251 |
+
249;24;21.02.2018;1;19NE;Spreeau;K
|
252 |
+
250;24;21.02.2018;1;19NW;Spreeau;nK
|
253 |
+
251;31;25.07.2018;32;19NW;Spreeau;nK
|
254 |
+
252;32;21.08.2018;5;3NE;Glienig;K
|
255 |
+
253;32;21.08.2018;6;3NW;Glienig;nK
|
256 |
+
254;32;21.08.2018;24;4NW;Gro� Liebitz;nK
|
257 |
+
255;32;21.08.2018;23;4SE;Gro� Liebitz;K
|
258 |
+
256;32;21.08.2018;17;9NE;Krausnick;K
|
259 |
+
257;32;21.08.2018;11;9NW;Krausnick;nK
|
260 |
+
258;32;22.08.2018;6;10SE;Hangelsberg;K
|
261 |
+
259;32;22.08.2018;4,5;10SW;Hangelsberg;nK
|
262 |
+
260;32;22.08.2018;20;12NE;Halbe;K
|
263 |
+
261;32;22.08.2018;24,5;12NW;Halbe;nK
|
264 |
+
262;32;22.08.2018;9;19NE;Spreeau;K
|
265 |
+
263;32;22.08.2018;5;19NW;Spreeau;nK
|
266 |
+
264;33;18.09.2018;8;3NE;Glienig;K
|
267 |
+
265;33;18.09.2018;6;3NW;Glienig;nK
|
268 |
+
266;33;18.09.2018;3,5;4NW;Gro� Liebitz;nK
|
269 |
+
267;33;18.09.2018;2;4SE;Gro� Liebitz;K
|
270 |
+
268;33;18.09.2018;12;9NE;Krausnick;K
|
271 |
+
269;33;18.09.2018;8;9NW;Krausnick;nK
|
272 |
+
270;33;19.09.2018;12;10SE;Hangelsberg;K
|
273 |
+
271;33;19.09.2018;12;10SW;Hangelsberg;nK
|
274 |
+
272;33;19.09.2018;12;12NE;Halbe;K
|
275 |
+
273;33;19.09.2018;18;12NW;Halbe;nK
|
276 |
+
274;33;19.09.2018;2;19NE;Spreeau;K
|
277 |
+
275;33;19.09.2018;3;19NW;Spreeau;nK
|
278 |
+
276;34;04.10.2018;25;3NE;Glienig;K
|
279 |
+
277;34;04.10.2018;22;3NW;Glienig;nK
|
280 |
+
278;34;04.10.2018;36;4NW;Gro� Liebitz;nK
|
281 |
+
279;34;04.10.2018;38;4SE;Gro� Liebitz;K
|
282 |
+
280;34;04.10.2018;25;9NE;Krausnick;K
|
283 |
+
281;34;04.10.2018;17;9NW;Krausnick;nK
|
284 |
+
282;34;02.10.2018;14;10SE;Hangelsberg;K
|
285 |
+
283;34;02.10.2018;14;10SW;Hangelsberg;nK
|
286 |
+
284;34;02.10.2018;13;12NE;Halbe;K
|
287 |
+
285;34;02.10.2018;12;12NW;Halbe;nK
|
288 |
+
286;34;02.10.2018;16;19NE;Spreeau;K
|
289 |
+
287;34;02.10.2018;15;19NW;Spreeau;nK
|
290 |
+
288;35;06.11.2018;9;3NE;Glienig;K
|
291 |
+
289;35;06.11.2018;7;3NW;Glienig;nK
|
292 |
+
290;35;06.11.2018;21;4NW;Gro� Liebitz;nK
|
293 |
+
291;35;06.11.2018;21;4SE;Gro� Liebitz;K
|
294 |
+
292;35;06.11.2018;11;9NE;Krausnick;K
|
295 |
+
293;35;06.11.2018;8;9NW;Krausnick;nK
|
296 |
+
294;35;06.11.2018;12;10SE;Hangelsberg;K
|
297 |
+
295;35;06.11.2018;14;10SW;Hangelsberg;nK
|
298 |
+
296;35;06.11.2018;8;12NE;Halbe;K
|
299 |
+
297;35;06.11.2018;9;12NW;Halbe;nK
|
300 |
+
298;35;06.11.2018;12;19NE;Spreeau;K
|
301 |
+
299;35;06.11.2018;12;19NW;Spreeau;nK
|
302 |
+
300;36;29.11.2018;7;3NE;Glienig;K
|
303 |
+
301;36;29.11.2018;7,5;3NW;Glienig;nK
|
304 |
+
302;36;29.11.2018;8;4NW;Gro� Liebitz;nK
|
305 |
+
303;36;29.11.2018;7,5;4SE;Gro� Liebitz;K
|
306 |
+
304;36;29.11.2018;6,5;9NE;Krausnick;K
|
307 |
+
305;36;29.11.2018;5;9NW;Krausnick;nK
|
308 |
+
306;36;04.12.2018;17,5;10SE;Hangelsberg;K
|
309 |
+
307;36;04.12.2018;19,5;10SW;Hangelsberg;nK
|
310 |
+
308;36;04.12.2018;32;12NE;Halbe;K
|
311 |
+
309;36;04.12.2018;32;12NW;Halbe;nK
|
312 |
+
310;36;04.12.2018;25;19NE;Spreeau;K
|
313 |
+
311;36;04.12.2018;24;19NW;Spreeau;nK
|
314 |
+
312;37;10.01.2019;90;3NE;Glienig;K
|
315 |
+
313;37;10.01.2019;99;3NW;Glienig;nK
|
316 |
+
314;37;10.01.2019;83;4NW;Gro� Liebitz;nK
|
317 |
+
315;37;10.01.2019;87;4SE;Gro� Liebitz;K
|
318 |
+
316;37;10.01.2019;90;9NE;Krausnick;K
|
319 |
+
317;37;10.01.2019;75;9NW;Krausnick;nK
|
320 |
+
318;37;09.01.2019;45;10SE;Hangelsberg;K
|
321 |
+
319;37;09.01.2019;50;10SW;Hangelsberg;nK
|
322 |
+
320;37;09.01.2019;65;12NE;Halbe;K
|
323 |
+
321;37;09.01.2019;65;12NW;Halbe;nK
|
324 |
+
322;37;09.01.2019;45;19NE;Spreeau;K
|
325 |
+
323;37;09.01.2019;46;19NW;Spreeau;nK
|
326 |
+
324;38;31.01.2019;30;3NE;Glienig;K
|
327 |
+
325;38;31.01.2019;32;3NW;Glienig;nK
|
328 |
+
326;38;31.01.2019;26;4NW;Gro� Liebitz;nK
|
329 |
+
327;38;31.01.2019;28;4SE;Gro� Liebitz;K
|
330 |
+
328;38;31.01.2019;25;9NE;Krausnick;K
|
331 |
+
329;38;31.01.2019;19;9NW;Krausnick;nK
|
332 |
+
330;38;30.01.2019;25;10SE;Hangelsberg;K
|
333 |
+
331;38;30.01.2019;27;10SW;Hangelsberg;nK
|
334 |
+
332;38;30.01.2019;17,5;12NE;Halbe;K
|
335 |
+
333;38;30.01.2019;25;12NW;Halbe;nK
|
336 |
+
334;38;30.01.2019;29;19NE;Spreeau;K
|
337 |
+
335;38;30.01.2019;29;19NW;Spreeau;nK
|
338 |
+
336;39;18.02.2019;17;3NE;Glienig;K
|
339 |
+
337;39;18.02.2019;18,5;3NW;Glienig;nK
|
340 |
+
338;39;20.02.2019;12;4NW;Gro� Liebitz;nK
|
341 |
+
339;39;20.02.2019;13;4SE;Gro� Liebitz;K
|
342 |
+
340;39;20.02.2019;15,5;9NE;Krausnick;K
|
343 |
+
341;39;20.02.2019;15;9NW;Krausnick;nK
|
344 |
+
342;39;18.02.2019;14,5;10SE;Hangelsberg;K
|
345 |
+
343;39;18.02.2019;14,5;10SW;Hangelsberg;nK
|
346 |
+
344;39;18.02.2019;13;12NE;Halbe;K
|
347 |
+
345;39;18.02.2019;17,5;12NW;Halbe;nK
|
348 |
+
346;39;18.02.2019;14;19NE;Spreeau;K
|
349 |
+
347;39;18.02.2019;13;19NW;Spreeau;nK
|
350 |
+
348;40;12.03.2019;33;3NE;Glienig;K
|
351 |
+
349;40;12.03.2019;34;3NW;Glienig;nK
|
352 |
+
350;40;11.03.2019;29;4NW;Gro� Liebitz;nK
|
353 |
+
351;40;11.03.2019;28;4SE;Gro� Liebitz;K
|
354 |
+
352;40;11.03.2019;33;9NE;Krausnick;K
|
355 |
+
353;40;11.03.2019;25;9NW;Krausnick;nK
|
356 |
+
354;40;12.03.2019;33;10SE;Hangelsberg;K
|
357 |
+
355;40;12.03.2019;33;10SW;Hangelsberg;nK
|
358 |
+
356;40;11.03.2019;27;12NE;Halbe;K
|
359 |
+
357;40;11.03.2019;32;12NW;Halbe;nK
|
360 |
+
358;40;12.03.2019;33;19NE;Spreeau;K
|
361 |
+
359;40;12.03.2019;32;19NW;Spreeau;nK
|
362 |
+
360;41;26.03.2019;16;3NE;Glienig;K
|
363 |
+
361;41;26.03.2019;16;3NW;Glienig;nK
|
364 |
+
362;41;26.03.2019;16;4NW;Gro� Liebitz;nK
|
365 |
+
363;41;26.03.2019;16;4SE;Gro� Liebitz;K
|
366 |
+
364;41;26.03.2019;18;9NE;Krausnick;K
|
367 |
+
365;41;26.03.2019;14;9NW;Krausnick;nK
|
368 |
+
366;41;26.03.2019;18,5;10SE;Hangelsberg;K
|
369 |
+
367;41;26.03.2019;19,5;10SW;Hangelsberg;nK
|
370 |
+
368;41;26.03.2019;13;12NE;Halbe;K
|
371 |
+
369;41;26.03.2019;18;12NW;Halbe;nK
|
372 |
+
370;41;26.03.2019;16;19NE;Spreeau;K
|
373 |
+
371;41;26.03.2019;15;19NW;Spreeau;nK
|
374 |
+
372;42;11.04.2019;2,5;3NE;Glienig;K
|
375 |
+
373;42;11.04.2019;3;3NW;Glienig;nK
|
376 |
+
374;42;11.04.2019;1;4NW;Gro� Liebitz;nK
|
377 |
+
375;42;11.04.2019;1;4SE;Gro� Liebitz;K
|
378 |
+
376;42;11.04.2019;1;9NE;Krausnick;K
|
379 |
+
377;42;11.04.2019;1;9NW;Krausnick;nK
|
380 |
+
378;42;10.04.2019;1,5;10SE;Hangelsberg;K
|
381 |
+
379;42;10.04.2019;1,7;10SW;Hangelsberg;nK
|
382 |
+
380;42;10.04.2019;0,5;12NE;Halbe;K
|
383 |
+
381;42;10.04.2019;1;12NW;Halbe;nK
|
384 |
+
382;42;10.04.2019;1,5;19NE;Spreeau;K
|
385 |
+
383;42;10.04.2019;2;19NW;Spreeau;nK
|
386 |
+
384;43;02.05.2019;9,5;3NE;Glienig;K
|
387 |
+
385;43;02.05.2019;10;3NW;Glienig;nK
|
388 |
+
386;43;02.05.2019;10;4NW;Gro� Liebitz;nK
|
389 |
+
387;43;02.05.2019;9,5;4SE;Gro� Liebitz;K
|
390 |
+
388;43;02.05.2019;11;9NE;Krausnick;K
|
391 |
+
389;43;02.05.2019;8;9NW;Krausnick;nK
|
392 |
+
390;43;03.05.2019;9;10SE;Hangelsberg;K
|
393 |
+
391;43;03.05.2019;9;10SW;Hangelsberg;nK
|
394 |
+
392;43;03.05.2019;4,5;12NE;Halbe;K
|
395 |
+
393;43;03.05.2019;7;12NW;Halbe;nK
|
396 |
+
394;43;07.05.2019;14;19NE;Spreeau;K
|
397 |
+
395;43;07.05.2019;12,5;19NW;Spreeau;nK
|
398 |
+
396;44;23.05.2019;22;3NE;Glienig;K
|
399 |
+
397;44;23.05.2019;22;3NW;Glienig;nK
|
400 |
+
398;44;23.05.2019;59;4NW;Gro� Liebitz;nK
|
401 |
+
399;44;23.05.2019;57;4SE;Gro� Liebitz;K
|
402 |
+
400;44;23.05.2019;36;9NE;Krausnick;K
|
403 |
+
401;44;23.05.2019;24;9NW;Krausnick;nK
|
404 |
+
402;44;22.05.2019;42;10SE;Hangelsberg;K
|
405 |
+
403;44;22.05.2019;32;10SW;Hangelsberg;nK
|
406 |
+
404;44;22.05.2019;16;12NE;Halbe;K
|
407 |
+
405;44;22.05.2019;20;12NW;Halbe;nK
|
408 |
+
406;44;22.05.2019;34;19NE;Spreeau;K
|
409 |
+
407;44;22.05.2019;32;19NW;Spreeau;nK
|
410 |
+
408;45;12.06.2019;27,5;3NE;Glienig;K
|
411 |
+
409;45;12.06.2019;33,5;3NW;Glienig;nK
|
412 |
+
410;45;12.06.2019;47;4NW;Gro� Liebitz;nK
|
413 |
+
411;45;12.06.2019;42;4SE;Gro� Liebitz;K
|
414 |
+
412;45;12.06.2019;22,5;9NE;Krausnick;K
|
415 |
+
413;45;12.06.2019;19;9NW;Krausnick;nK
|
416 |
+
414;45;04.06.2019;9;10SE;Hangelsberg;K
|
417 |
+
415;45;04.06.2019;7;10SW;Hangelsberg;nK
|
418 |
+
416;45;04.06.2019;0;12NE;Halbe;K
|
419 |
+
417;45;04.06.2019;0;12NW;Halbe;nK
|
420 |
+
418;45;04.06.2019;3,5;19NE;Spreeau;K
|
421 |
+
419;45;04.06.2019;3,5;19NW;Spreeau;nK
|
422 |
+
420;46;02.07.2019;3;3NE;Glienig;K
|
423 |
+
421;46;02.07.2019;4;3NW;Glienig;nK
|
424 |
+
422;46;02.07.2019;1,5;4NW;Gro� Liebitz;nK
|
425 |
+
423;46;02.07.2019;0;4SE;Gro� Liebitz;K
|
426 |
+
424;46;02.07.2019;7;9NE;Krausnick;K
|
427 |
+
425;46;02.07.2019;8,5;9NW;Krausnick;nK
|
428 |
+
426;46;04.07.2019;35;10SE;Hangelsberg;K
|
429 |
+
427;46;04.07.2019;36;10SW;Hangelsberg;nK
|
430 |
+
428;46;04.07.2019;18,5;12NE;Halbe;K
|
431 |
+
429;46;04.07.2019;21,5;12NW;Halbe;nK
|
432 |
+
430;46;04.07.2019;41;19NE;Spreeau;K
|
433 |
+
431;46;04.07.2019;35,5;19NW;Spreeau;nK
|
434 |
+
432;47;12.08.2019;52;3NE;Glienig;K
|
435 |
+
433;47;12.08.2019;49;3NW;Glienig;nK
|
436 |
+
434;47;12.08.2019;56,5;4NW;Gro� Liebitz;nK
|
437 |
+
435;47;12.08.2019;52,5;4SE;Gro� Liebitz;K
|
438 |
+
436;47;12.08.2019;58,5;9NE;Krausnick;K
|
439 |
+
437;47;12.08.2019;59,5;9NW;Krausnick;nK
|
440 |
+
438;47;13.08.2019;53;10SE;Hangelsberg;K
|
441 |
+
439;47;13.08.2019;62;10SW;Hangelsberg;nK
|
442 |
+
440;47;13.08.2019;39;12NE;Halbe;K
|
443 |
+
441;47;13.08.2019;46;12NW;Halbe;nK
|
444 |
+
442;47;13.08.2019;66,5;19NE;Spreeau;K
|
445 |
+
443;47;13.08.2019;63,5;19NW;Spreeau;nK
|
446 |
+
444;48;05.09.2019;4;3NE;Glienig;K
|
447 |
+
445;48;05.09.2019;4;3NW;Glienig;nK
|
448 |
+
446;48;05.09.2019;6;4NW;Gro� Liebitz;nK
|
449 |
+
447;48;05.09.2019;3,5;4SE;Gro� Liebitz;K
|
450 |
+
448;48;05.09.2019;10;9NE;Krausnick;K
|
451 |
+
449;48;05.09.2019;9,5;9NW;Krausnick;nK
|
452 |
+
450;48;04.09.2019;11;10SE;Hangelsberg;K
|
453 |
+
451;48;04.09.2019;10,5;10SW;Hangelsberg;nK
|
454 |
+
452;48;04.09.2019;2,5;12NE;Halbe;K
|
455 |
+
453;48;04.09.2019;5;12NW;Halbe;nK
|
456 |
+
454;48;04.09.2019;9,5;19NE;Spreeau;K
|
457 |
+
455;48;04.09.2019;8,5;19NW;Spreeau;nK
|
458 |
+
456;49;07.10.2019;61;3NE;Glienig;K
|
459 |
+
457;49;07.10.2019;61;3NW;Glienig;nK
|
460 |
+
458;49;07.10.2019;56;4NW;Gro� Liebitz;nK
|
461 |
+
459;49;07.10.2019;56;4SE;Gro� Liebitz;K
|
462 |
+
460;49;07.10.2019;64;9NE;Krausnick;K
|
463 |
+
461;49;07.10.2019;48;9NW;Krausnick;nK
|
464 |
+
462;49;04.10.2019;48,5;10SE;Hangelsberg;K
|
465 |
+
463;49;04.10.2019;57;10SW;Hangelsberg;nK
|
466 |
+
464;49;08.10.2019;57;12NE;Halbe;K
|
467 |
+
465;49;08.10.2019;70;12NW;Halbe;nK
|
468 |
+
466;49;04.10.2019;45;19NE;Spreeau;K
|
469 |
+
467;49;04.10.2019;42,5;19NW;Spreeau;nK
|
470 |
+
468;50;06.11.2019;21;3NE;Glienig;K
|
471 |
+
469;50;06.11.2019;24;3NW;Glienig;nK
|
472 |
+
470;50;06.11.2019;20,5;4NW;Gro� Liebitz;nK
|
473 |
+
471;50;06.11.2019;20,5;4SE;Gro� Liebitz;K
|
474 |
+
472;50;06.11.2019;23,5;9NE;Krausnick;K
|
475 |
+
473;50;06.11.2019;20,5;9NW;Krausnick;nK
|
476 |
+
474;50;05.11.2019;34;10SE;Hangelsberg;K
|
477 |
+
475;50;05.11.2019;37;10SW;Hangelsberg;nK
|
478 |
+
476;50;06.11.2019;16,5;12NE;Halbe;K
|
479 |
+
477;50;06.11.2019;26;12NW;Halbe;nK
|
480 |
+
478;50;05.11.2019;37;19NE;Spreeau;K
|
481 |
+
479;50;05.11.2019;32;19NW;Spreeau;nK
|
482 |
+
480;51;26.11.2019;16;3NE;Glienig;K
|
483 |
+
481;51;26.11.2019;16;3NW;Glienig;nK
|
484 |
+
482;51;26.11.2019;7,5;4NW;Gro� Liebitz;nK
|
485 |
+
483;51;26.11.2019;9;4SE;Gro� Liebitz;K
|
486 |
+
484;51;26.11.2019;14,5;9NE;Krausnick;K
|
487 |
+
485;51;26.11.2019;10,5;9NW;Krausnick;nK
|
488 |
+
486;51;28.11.2019;17;10SE;Hangelsberg;K
|
489 |
+
487;51;28.11.2019;17,5;10SW;Hangelsberg;nK
|
490 |
+
488;51;28.11.2019;14,5;12NE;Halbe;K
|
491 |
+
489;51;28.11.2019;17;12NW;Halbe;nK
|
492 |
+
490;51;28.11.2019;22;19NE;Spreeau;K
|
493 |
+
491;51;28.11.2019;20;19NW;Spreeau;nK
|
494 |
+
492;52;17.12.2019;16;3NE;Glienig;K
|
495 |
+
493;52;17.12.2019;18;3NW;Glienig;nK
|
496 |
+
494;52;17.12.2019;17;4NW;Gro� Liebitz;nK
|
497 |
+
495;52;17.12.2019;12,5;4SE;Gro� Liebitz;K
|
498 |
+
496;52;17.12.2019;19;9NE;Krausnick;K
|
499 |
+
497;52;17.12.2019;13,5;9NW;Krausnick;nK
|
500 |
+
498;52;18.12.2019;16;10SE;Hangelsberg;K
|
501 |
+
499;52;18.12.2019;19,5;10SW;Hangelsberg;nK
|
502 |
+
500;52;18.12.2019;10;12NE;Halbe;K
|
503 |
+
501;52;18.12.2019;14,5;12NW;Halbe;nK
|
504 |
+
502;52;18.12.2019;18;19NE;Spreeau;K
|
505 |
+
503;52;18.12.2019;17,5;19NW;Spreeau;nK
|
506 |
+
504;53;07.01.2020;17;3NE;Glienig;K
|
507 |
+
505;53;07.01.2020;17;3NW;Glienig;nK
|
508 |
+
506;53;07.01.2020;17;4NW;Gro� Liebitz;nK
|
509 |
+
507;53;07.01.2020;14;4SE;Gro� Liebitz;K
|
510 |
+
508;53;07.01.2020;24;9NE;Krausnick;K
|
511 |
+
509;53;07.01.2020;20;9NW;Krausnick;nK
|
512 |
+
510;53;06.01.2020;17;10SE;Hangelsberg;K
|
513 |
+
511;53;06.01.2020;21,5;10SW;Hangelsberg;nK
|
514 |
+
512;53;06.01.2020;15;12NE;Halbe;K
|
515 |
+
513;53;06.01.2020;22;12NW;Halbe;nK
|
516 |
+
514;53;06.01.2020;19,5;19NE;Spreeau;K
|
517 |
+
515;53;06.01.2020;19;19NW;Spreeau;nK
|
518 |
+
516;54;31.01.2020;18,5;3NE;Glienig;K
|
519 |
+
517;54;31.01.2020;20;3NW;Glienig;nK
|
520 |
+
518;54;03.02.2020;35;4NW;Gro� Liebitz;nK
|
521 |
+
519;54;03.02.2020;24,5;4SE;Gro� Liebitz;K
|
522 |
+
520;54;03.02.2020;33;9NE;Krausnick;K
|
523 |
+
521;54;03.02.2020;23;9NW;Krausnick;nK
|
524 |
+
522;54;29.01.2020;21,5;10SE;Hangelsberg;K
|
525 |
+
523;54;29.01.2020;22,5;10SW;Hangelsberg;nK
|
526 |
+
524;54;31.01.2020;16,5;12NE;Halbe;K
|
527 |
+
525;54;31.01.2020;22,5;12NW;Halbe;nK
|
528 |
+
526;54;29.01.2020;22;19NE;Spreeau;K
|
529 |
+
527;54;29.01.2020;23;19NW;Spreeau;nK
|
530 |
+
528;55;03.03.2020;68;3NE;Glienig;K
|
531 |
+
529;55;03.03.2020;74;3NW;Glienig;nK
|
532 |
+
530;55;03.03.2020;60;4NW;Gro� Liebitz;nK
|
533 |
+
531;55;03.03.2020;58;4SE;Gro� Liebitz;K
|
534 |
+
532;55;03.03.2020;53;9NE;Krausnick;K
|
535 |
+
533;55;03.03.2020;46;9NW;Krausnick;nK
|
536 |
+
534;55;11.03.2020;89;10SE;Hangelsberg;K
|
537 |
+
535;55;11.03.2020;96,5;10SW;Hangelsberg;nK
|
538 |
+
536;55;03.03.2020;60;12NE;Halbe;K
|
539 |
+
537;55;03.03.2020;60;12NW;Halbe;nK
|
540 |
+
538;55;11.03.2020;87;19NE;Spreeau;K
|
541 |
+
539;55;11.03.2020;82;19NW;Spreeau;nK
|
542 |
+
540;56;25.03.2020;17;3NE;Glienig;K
|
543 |
+
541;56;25.03.2020;20;3NW;Glienig;nK
|
544 |
+
542;56;25.03.2020;27;4NW;Gro� Liebitz;nK
|
545 |
+
543;56;25.03.2020;26;4SE;Gro� Liebitz;K
|
546 |
+
544;56;25.03.2020;18,5;9NE;Krausnick;K
|
547 |
+
545;56;25.03.2020;15,5;9NW;Krausnick;nK
|
548 |
+
546;56;26.03.2020;2;10SE;Hangelsberg;K
|
549 |
+
547;56;26.03.2020;3;10SW;Hangelsberg;nK
|
550 |
+
548;56;26.03.2020;15;12NE;Halbe;K
|
551 |
+
549;56;26.03.2020;19,5;12NW;Halbe;nK
|
552 |
+
550;56;26.03.2020;2,5;19NE;Spreeau;K
|
553 |
+
551;56;26.03.2020;3;19NW;Spreeau;nK
|
554 |
+
552;57;08.04.2020;0,1;3NE;Glienig;K
|
555 |
+
553;57;08.04.2020;0,3;3NW;Glienig;nK
|
556 |
+
554;57;15.04.2020;1;4NW;Gro� Liebitz;nK
|
557 |
+
555;57;15.04.2020;2,5;4SE;Gro� Liebitz;K
|
558 |
+
556;57;15.04.2020;3,5;9NE;Krausnick;K
|
559 |
+
557;57;15.04.2020;3;9NW;Krausnick;nK
|
560 |
+
558;57;15.04.2020;1,5;10SE;Hangelsberg;K
|
561 |
+
559;57;15.04.2020;2;10SW;Hangelsberg;nK
|
562 |
+
560;57;08.04.2020;0,2;12NE;Halbe;K
|
563 |
+
561;57;08.04.2020;0;12NW;Halbe;nK
|
564 |
+
562;57;15.04.2020;2;19NE;Spreeau;K
|
565 |
+
563;57;15.04.2020;2;19NW;Spreeau;nK
|
566 |
+
564;58;05.05.2020;13;3NE;Glienig;K
|
567 |
+
565;58;05.05.2020;12,5;3NW;Glienig;nK
|
568 |
+
566;58;05.05.2020;6,5;4NW;Gro� Liebitz;nK
|
569 |
+
567;58;05.05.2020;6,5;4SE;Gro� Liebitz;K
|
570 |
+
568;58;05.05.2020;10;9NE;Krausnick;K
|
571 |
+
569;58;05.05.2020;8,5;9NW;Krausnick;nK
|
572 |
+
570;58;06.05.2020;12;10SE;Hangelsberg;K
|
573 |
+
571;58;06.05.2020;14;10SW;Hangelsberg;nK
|
574 |
+
572;58;06.05.2020;5;12NE;Halbe;K
|
575 |
+
573;58;06.05.2020;7;12NW;Halbe;nK
|
576 |
+
574;58;06.05.2020;16;19NE;Spreeau;K
|
577 |
+
575;58;06.05.2020;13;19NW;Spreeau;nK
|
578 |
+
576;59;27.05.2020;16,5;3NE;Glienig;K
|
579 |
+
577;59;27.05.2020;19;3NW;Glienig;nK
|
580 |
+
578;59;27.05.2020;22;4NW;Gro� Liebitz;nK
|
581 |
+
579;59;27.05.2020;20;4SE;Gro� Liebitz;K
|
582 |
+
580;59;27.05.2020;21;9NE;Krausnick;K
|
583 |
+
581;59;27.05.2020;16,5;9NW;Krausnick;nK
|
584 |
+
582;59;26.05.2020;23;10SE;Hangelsberg;K
|
585 |
+
583;59;26.05.2020;24;10SW;Hangelsberg;nK
|
586 |
+
584;59;26.05.2020;13,5;12NE;Halbe;K
|
587 |
+
585;59;26.05.2020;14;12NW;Halbe;nK
|
588 |
+
586;59;26.05.2020;28;19NE;Spreeau;K
|
589 |
+
587;59;26.05.2020;28;19NW;Spreeau;nK
|
590 |
+
588;60;26.06.2020;10;3NE;Glienig;K
|
591 |
+
589;60;26.06.2020;10;3NW;Glienig;nK
|
592 |
+
590;60;22.06.2020;18,5;4NW;Gro� Liebitz;nK
|
593 |
+
591;60;22.06.2020;24;4SE;Gro� Liebitz;K
|
594 |
+
592;60;22.06.2020;14;9NE;Krausnick;K
|
595 |
+
593;60;22.06.2020;9;9NW;Krausnick;nK
|
596 |
+
594;60;23.06.2020;24;10SE;Hangelsberg;K
|
597 |
+
595;60;23.06.2020;23,5;10SW;Hangelsberg;nK
|
598 |
+
596;60;26.06.2020;13;12NE;Halbe;K
|
599 |
+
597;60;26.06.2020;15;12NW;Halbe;nK
|
600 |
+
598;60;23.06.2020;35;19NE;Spreeau;K
|
601 |
+
599;60;23.06.2020;32;19NW;Spreeau;nK
|
602 |
+
600;61;14.07.2020;21,5;3NE;Glienig;K
|
603 |
+
601;61;14.07.2020;20;3NW;Glienig;nK
|
604 |
+
602;61;14.07.2020;32,5;4NW;Gro� Liebitz;nK
|
605 |
+
603;61;14.07.2020;30;4SE;Gro� Liebitz;K
|
606 |
+
604;61;14.07.2020;56;9NE;Krausnick;K
|
607 |
+
605;61;14.07.2020;48;9NW;Krausnick;nK
|
608 |
+
606;61;15.07.2020;24;10SE;Hangelsberg;K
|
609 |
+
607;61;15.07.2020;29;10SW;Hangelsberg;nK
|
610 |
+
608;61;15.07.2020;38,5;12NE;Halbe;K
|
611 |
+
609;61;15.07.2020;43;12NW;Halbe;nK
|
612 |
+
610;61;15.07.2020;19;19NE;Spreeau;K
|
613 |
+
611;61;15.07.2020;18;19NW;Spreeau;nK
|
614 |
+
612;62;17.08.2020;58,5;3NE;Glienig;K
|
615 |
+
613;62;17.08.2020;54;3NW;Glienig;nK
|
616 |
+
614;62;17.08.2020;39;4NW;Gro� Liebitz;nK
|
617 |
+
615;62;17.08.2020;51;4SE;Gro� Liebitz;K
|
618 |
+
616;62;17.08.2020;32;9NE;Krausnick;K
|
619 |
+
617;62;17.08.2020;25;9NW;Krausnick;nK
|
620 |
+
618;62;14.08.2020;13,5;10SE;Hangelsberg;K
|
621 |
+
619;62;14.08.2020;17,5;10SW;Hangelsberg;nK
|
622 |
+
620;62;17.08.2020;21,5;12NE;Halbe;K
|
623 |
+
621;62;17.08.2020;27;12NW;Halbe;nK
|
624 |
+
622;62;14.08.2020;15;19NE;Spreeau;K
|
625 |
+
623;63;01.09.2020;38;3NE;Glienig;K
|
626 |
+
624;63;01.09.2020;34;3NW;Glienig;nK
|
627 |
+
625;63;01.09.2020;45;4NW;Gro� Liebitz;nK
|
628 |
+
626;63;01.09.2020;65;4SE;Gro� Liebitz;K
|
629 |
+
627;63;01.09.2020;45;9NE;Krausnick;K
|
630 |
+
628;63;01.09.2020;35;9NW;Krausnick;nK
|
631 |
+
629;63;02.09.2020;33;10SE;Hangelsberg;K
|
632 |
+
630;63;02.09.2020;36;10SW;Hangelsberg;nK
|
633 |
+
631;63;04.09.2020;28;12NE;Halbe;K
|
634 |
+
632;63;04.09.2020;38;12NW;Halbe;nK
|
635 |
+
633;63;02.09.2020;39;19NE;Spreeau;K
|
636 |
+
634;63;02.09.2020;39;19NW;Spreeau;nK
|
637 |
+
635;64;22.09.2020;10;3NE;Glienig;K
|
638 |
+
636;64;22.09.2020;9;3NW;Glienig;nK
|
639 |
+
637;64;22.09.2020;5;4NW;Gro� Liebitz;nK
|
640 |
+
638;64;22.09.2020;3;4SE;Gro� Liebitz;K
|
641 |
+
639;64;22.09.2020;7;9NE;Krausnick;K
|
642 |
+
640;64;22.09.2020;5;9NW;Krausnick;nK
|
643 |
+
641;64;23.09.2020;16;10SE;Hangelsberg;K
|
644 |
+
642;64;23.09.2020;12,5;10SW;Hangelsberg;nK
|
645 |
+
643;64;22.09.2020;0,5;12NE;Halbe;K
|
646 |
+
644;64;22.09.2020;1;12NW;Halbe;nK
|
647 |
+
645;64;23.09.2020;24;19NE;Spreeau;K
|
648 |
+
646;64;23.09.2020;18;19NW;Spreeau;nK
|
649 |
+
647;65;30.09.2020;32,5;3NE;Glienig;K
|
650 |
+
648;65;30.09.2020;33,5;3NW;Glienig;nK
|
651 |
+
649;65;08.10.2020;28;4NW;Gro� Liebitz;nK
|
652 |
+
650;65;08.10.2020;32;4SE;Gro� Liebitz;K
|
653 |
+
651;65;08.10.2020;26;9NE;Krausnick;K
|
654 |
+
652;65;08.10.2020;23;9NW;Krausnick;nK
|
655 |
+
653;65;07.10.2020;28,5;10SE;Hangelsberg;K
|
656 |
+
654;65;07.10.2020;29;10SW;Hangelsberg;nK
|
657 |
+
655;65;07.10.2020;18;12NE;Halbe;K
|
658 |
+
656;65;07.10.2020;22,5;12NW;Halbe;nK
|
659 |
+
657;65;07.10.2020;29;19NE;Spreeau;K
|
660 |
+
658;65;07.10.2020;29;19NW;Spreeau;nK
|
661 |
+
659;66;29.10.2020;35;3NE;Glienig;K
|
662 |
+
660;66;29.10.2020;41,5;3NW;Glienig;nK
|
663 |
+
661;66;29.10.2020;43;4NW;Gro� Liebitz;nK
|
664 |
+
662;66;29.10.2020;37;4SE;Gro� Liebitz;K
|
665 |
+
663;66;29.10.2020;35;9NE;Krausnick;K
|
666 |
+
664;66;29.10.2020;28;9NW;Krausnick;nK
|
667 |
+
665;66;30.10.2020;44;10SE;Hangelsberg;K
|
668 |
+
666;66;30.10.2020;48;10SW;Hangelsberg;nK
|
669 |
+
667;66;30.10.2020;33;12NE;Halbe;K
|
670 |
+
668;66;30.10.2020;36;12NW;Halbe;nK
|
671 |
+
669;66;30.10.2020;50;19NE;Spreeau;K
|
672 |
+
670;66;30.10.2020;46;19NW;Spreeau;nK
|
673 |
+
671;67;18.11.2020;26;3NE;Glienig;K
|
674 |
+
672;67;18.11.2020;26,5;3NW;Glienig;nK
|
675 |
+
673;67;18.11.2020;25;4NW;Gro� Liebitz;nK
|
676 |
+
674;67;18.11.2020;21;4SE;Gro� Liebitz;K
|
677 |
+
675;67;18.11.2020;25,5;9NE;Krausnick;K
|
678 |
+
676;67;18.11.2020;23,5;9NW;Krausnick;nK
|
679 |
+
677;67;19.11.2020;22;10SE;Hangelsberg;K
|
680 |
+
678;67;19.11.2020;20,5;10SW;Hangelsberg;nK
|
681 |
+
679;67;19.11.2020;12;12NE;Halbe;K
|
682 |
+
680;67;19.11.2020;14;12NW;Halbe;nK
|
683 |
+
681;67;19.11.2020;17;19NE;Spreeau;K
|
684 |
+
682;67;19.11.2020;18;19NW;Spreeau;nK
|
685 |
+
683;68;09.12.2020;5;3NE;Glienig;K
|
686 |
+
684;68;09.12.2020;5;3NW;Glienig;nK
|
687 |
+
685;68;09.12.2020;3,5;4NW;Gro� Liebitz;nK
|
688 |
+
686;68;09.12.2020;4;4SE;Gro� Liebitz;K
|
689 |
+
687;68;09.12.2020;4,5;9NE;Krausnick;K
|
690 |
+
688;68;09.12.2020;3,5;9NW;Krausnick;nK
|
691 |
+
689;68;07.12.2020;2;10SE;Hangelsberg;K
|
692 |
+
690;68;07.12.2020;3;10SW;Hangelsberg;nK
|
693 |
+
691;68;07.12.2020;2;12NE;Halbe;K
|
694 |
+
692;68;07.12.2020;3,5;12NW;Halbe;nK
|
695 |
+
693;68;09.12.2020;2;19NE;Spreeau;K
|
696 |
+
694;68;09.12.2020;2,5;19NW;Spreeau;nK
|
697 |
+
695;69;06.01.2021;24;3NE;Glienig;K
|
698 |
+
696;69;06.01.2021;27;3NW;Glienig;nK
|
699 |
+
697;69;06.01.2021;36;4NW;Gro� Liebitz;nK
|
700 |
+
698;69;06.01.2021;38;4SE;Gro� Liebitz;K
|
701 |
+
699;69;06.01.2021;25;9NE;Krausnick;K
|
702 |
+
700;69;06.01.2021;23,5;9NW;Krausnick;nK
|
703 |
+
701;69;07.01.2021;37;10SE;Hangelsberg;K
|
704 |
+
702;69;07.01.2021;33;10SW;Hangelsberg;nK
|
705 |
+
703;69;07.01.2021;24,5;12NE;Halbe;K
|
706 |
+
704;69;07.01.2021;25,5;12NW;Halbe;nK
|
707 |
+
705;62;14.08.2020;14;19NW;Spreeau;nK
|
708 |
+
706;69;07.01.2021;28;19NE;Spreeau;K
|
709 |
+
707;69;07.01.2021;27,5;19NW;Spreeau;nK
|
710 |
+
708;70;26.01.2021;34;3NE;Glienig;K
|
711 |
+
709;70;26.01.2021;38;3NW;Glienig;nK
|
712 |
+
710;70;26.01.2021;41;4NW;Gro� Liebitz;nK
|
713 |
+
711;70;26.01.2021;45;4SE;Gro� Liebitz;K
|
714 |
+
712;70;26.01.2021;28;9NE;Krausnick;K
|
715 |
+
713;70;26.01.2021;28;9NW;Krausnick;nK
|
716 |
+
714;70;27.01.2021;39;10SE;Hangelsberg;K
|
717 |
+
715;70;27.01.2021;31;10SW;Hangelsberg;nK
|
718 |
+
716;70;27.01.2021;31,5;12NE;Halbe;K
|
719 |
+
717;70;27.01.2021;26,5;12NW;Halbe;nK
|
720 |
+
718;70;27.01.2021;27,5;19NE;Spreeau;K
|
721 |
+
719;70;27.01.2021;31,5;19NW;Spreeau;nK
|
722 |
+
720;71;17.02.2021;25;3NE;Glienig;K
|
723 |
+
721;71;17.02.2021;16;3NW;Glienig;nK
|
724 |
+
722;71;17.02.2021;18;4NW;Gro� Liebitz;nK
|
725 |
+
723;71;17.02.2021;14;4SE;Gro� Liebitz;K
|
726 |
+
724;71;17.02.2021;18;9NE;Krausnick;K
|
727 |
+
725;71;17.02.2021;19;9NW;Krausnick;nK
|
728 |
+
726;71;18.02.2021;18;10SE;Hangelsberg;K
|
729 |
+
727;71;18.02.2021;17;10SW;Hangelsberg;nK
|
730 |
+
728;71;18.02.2021;26;12NE;Halbe;K
|
731 |
+
729;71;18.02.2021;25;12NW;Halbe;nK
|
732 |
+
730;71;18.02.2021;17;19NE;Spreeau;K
|
733 |
+
731;71;18.02.2021;18;19NW;Spreeau;nK
|
734 |
+
732;72;11.03.2021;18;3NE;Glienig;K
|
735 |
+
733;72;11.03.2021;21;3NW;Glienig;nK
|
736 |
+
734;72;19.03.2021;40;4NW;Gro� Liebitz;nK
|
737 |
+
735;72;19.03.2021;51,5;4SE;Gro� Liebitz;K
|
738 |
+
736;72;19.03.2021;42;9NE;Krausnick;K
|
739 |
+
737;72;19.03.2021;33;9NW;Krausnick;nK
|
740 |
+
738;72;12.03.2021;21,5;10SE;Hangelsberg;K
|
741 |
+
739;72;12.03.2021;19;10SW;Hangelsberg;nK
|
742 |
+
740;72;19.03.2021;27;12NE;Halbe;K
|
743 |
+
741;72;19.03.2021;44;12NW;Halbe;nK
|
744 |
+
742;72;12.03.2021;17,5;19NE;Spreeau;K
|
745 |
+
743;72;12.03.2021;15;19NW;Spreeau;nK
|
746 |
+
744;73;12.04.2021;31;3NE;Glienig;K
|
747 |
+
745;73;12.04.2021;31;3NW;Glienig;nK
|
748 |
+
746;73;13.04.2021;11;4NW;Gro� Liebitz;nK
|
749 |
+
747;73;13.04.2021;15,5;4SE;Gro� Liebitz;K
|
750 |
+
748;73;13.04.2021;14;9NE;Krausnick;K
|
751 |
+
749;73;13.04.2021;11;9NW;Krausnick;nK
|
752 |
+
750;73;12.04.2021;21;10SE;Hangelsberg;K
|
753 |
+
751;73;12.04.2021;24,5;10SW;Hangelsberg;nK
|
754 |
+
752;73;13.04.2021;9;12NE;Halbe;K
|
755 |
+
753;73;13.04.2021;12;12NW;Halbe;nK
|
756 |
+
754;73;13.04.2021;24,5;19NE;Spreeau;K
|
757 |
+
755;73;13.04.2021;23;19NW;Spreeau;nK
|
758 |
+
756;74;03.05.2021;13;3NE;Glienig;K
|
759 |
+
757;74;03.05.2021;13;3NW;Glienig;nK
|
760 |
+
758;74;03.05.2021;18;4NW;Gro� Liebitz;nK
|
761 |
+
759;74;03.05.2021;29;4SE;Gro� Liebitz;K
|
762 |
+
760;74;03.05.2021;24;9NE;Krausnick;K
|
763 |
+
761;74;03.05.2021;16;9NW;Krausnick;nK
|
764 |
+
762;74;04.05.2021;28;10SE;Hangelsberg;K
|
765 |
+
763;74;04.05.2021;25;10SW;Hangelsberg;nK
|
766 |
+
764;74;04.05.2021;25;12NE;Halbe;K
|
767 |
+
765;74;04.05.2021;24;12NW;Halbe;nK
|
768 |
+
766;74;04.05.2021;13,5;19NE;Spreeau;K
|
769 |
+
767;74;04.05.2021;18,5;19NW;Spreeau;nK
|
770 |
+
768;75;27.05.2021;29;3NE;Glienig;K
|
771 |
+
769;75;27.05.2021;32;3NW;Glienig;nK
|
772 |
+
770;75;27.05.2021;37;4NW;Gro� Liebitz;nK
|
773 |
+
771;75;27.05.2021;44;4SE;Gro� Liebitz;K
|
774 |
+
772;75;27.05.2021;;9NE;Krausnick;K
|
775 |
+
773;75;27.05.2021;47;9NW;Krausnick;nK
|
776 |
+
774;75;20.05.2021;12;10SE;Hangelsberg;K
|
777 |
+
775;75;20.05.2021;14;10SW;Hangelsberg;nK
|
778 |
+
776;75;20.05.2021;24;12NE;Halbe;K
|
779 |
+
777;75;20.05.2021;33;12NW;Halbe;nK
|
780 |
+
778;75;20.05.2021;10;19NE;Spreeau;K
|
781 |
+
779;75;20.05.2021;11;19NW;Spreeau;nK
|
782 |
+
0;79;04.08.2021;7;3NE;Glienig;K
|
783 |
+
1;79;04.08.2021;8;3NW;Glienig;nK
|
784 |
+
2;79;04.08.2021;2;4NW;Gro� Liebitz;nK
|
785 |
+
3;79;04.08.2021;1,5;4SE;Gro� Liebitz;K
|
786 |
+
4;79;04.08.2021;13;9NE;Krausnick;K
|
787 |
+
5;79;04.08.2021;10;9NW;Krausnick;nK
|
788 |
+
6;79;06.08.2021;9;10SE;Hangelsberg;K
|
789 |
+
7;79;06.08.2021;11;10SW;Hangelsberg;nK
|
790 |
+
8;79;06.08.2021;6;12NE;Halbe;K
|
791 |
+
9;79;06.08.2021;7;12NW;Halbe;nK
|
792 |
+
10;79;06.08.2021;7;19NE;Spreeau;K
|
793 |
+
11;79;06.08.2021;0;19NW;Spreeau;nK
|
794 |
+
12;80;18.08.2021;4;3NE;Glienig;K
|
795 |
+
13;80;18.08.2021;5;3NW;Glienig;nK
|
796 |
+
14;80;18.08.2021;6;4NW;Gro� Liebitz;nK
|
797 |
+
15;80;18.08.2021;5;4SE;Gro� Liebitz;K
|
798 |
+
16;80;18.08.2021;4;9NE;Krausnick;K
|
799 |
+
17;80;18.08.2021;6;9NW;Krausnick;nK
|
800 |
+
18;80;20.08.2021;3;10SE;Hangelsberg;K
|
801 |
+
19;80;20.08.2021;4;10SW;Hangelsberg;nK
|
802 |
+
20;80;20.08.2021;0,5;12NE;Halbe;K
|
803 |
+
21;80;20.08.2021;3,5;12NW;Halbe;nK
|
804 |
+
22;80;20.08.2021;4;19NE;Spreeau;K
|
805 |
+
23;80;20.08.2021;4;19NW;Spreeau;nK
|
806 |
+
24;81;01.09.2021;0;3NE;Glienig;K
|
807 |
+
25;81;01.09.2021;76;3NW;Glienig;nK
|
808 |
+
26;81;01.09.2021;69;4NW;Gro� Liebitz;nK
|
809 |
+
27;81;01.09.2021;107;4SE;Gro� Liebitz;K
|
810 |
+
28;81;03.09.2021;98;9NE;Krausnick;K
|
811 |
+
29;81;03.09.2021;0;9NW;Krausnick;nK
|
812 |
+
30;81;03.09.2021;106;10SE;Hangelsberg;K
|
813 |
+
31;81;03.09.2021;80;10SW;Hangelsberg;nK
|
814 |
+
32;81;03.09.2021;94;12NE;Halbe;K
|
815 |
+
33;81;03.09.2021;101;12NW;Halbe;nK
|
816 |
+
34;81;03.09.2021;79;19NE;Spreeau;K
|
817 |
+
35;81;03.09.2021;64;19NW;Spreeau;nK
|
818 |
+
36;82;14.09.2021;0;3NE;Glienig;K
|
819 |
+
37;82;14.09.2021;1,5;3NW;Glienig;nK
|
820 |
+
38;82;14.09.2021;1;4NW;Gro� Liebitz;nK
|
821 |
+
39;82;14.09.2021;2;4SE;Gro� Liebitz;K
|
822 |
+
40;82;15.09.2021;1;9NE;Krausnick;K
|
823 |
+
41;82;15.09.2021;1;9NW;Krausnick;nK
|
824 |
+
42;82;15.09.2021;3;10SE;Hangelsberg;K
|
825 |
+
43;82;15.09.2021;4;10SW;Hangelsberg;nK
|
826 |
+
44;82;15.09.2021;1;12NE;Halbe;K
|
827 |
+
45;82;15.09.2021;1,5;12NW;Halbe;nK
|
828 |
+
46;82;15.09.2021;5;19NE;Spreeau;K
|
829 |
+
47;82;15.09.2021;4;19NW;Spreeau;nK
|
830 |
+
48;83;29.09.2021;0;3NE;Glienig;K
|
831 |
+
49;83;29.09.2021;13;3NW;Glienig;nK
|
832 |
+
50;83;29.09.2021;5;4NW;Gro� Liebitz;nK
|
833 |
+
51;83;29.09.2021;5;4SE;Gro� Liebitz;K
|
834 |
+
52;83;30.09.2021;18;9NE;Krausnick;K
|
835 |
+
53;83;30.09.2021;21;9NW;Krausnick;nK
|
836 |
+
54;83;30.09.2021;12;10SE;Hangelsberg;K
|
837 |
+
55;83;30.09.2021;15;10SW;Hangelsberg;nK
|
838 |
+
56;83;30.09.2021;15;12NE;Halbe;K
|
839 |
+
57;83;30.09.2021;20;12NW;Halbe;nK
|
840 |
+
58;83;30.09.2021;14;19NE;Spreeau;K
|
841 |
+
59;83;30.09.2021;14;19NW;Spreeau;nK
|
842 |
+
60;84;14.10.2021;4;3NE;Glienig;K
|
843 |
+
61;84;14.10.2021;9;3NW;Glienig;nK
|
844 |
+
62;84;15.10.2021;5;4NW;Gro� Liebitz;nK
|
845 |
+
63;84;15.10.2021;2;4SE;Gro� Liebitz;K
|
846 |
+
64;84;15.10.2021;6;9NE;Krausnick;K
|
847 |
+
65;84;15.10.2021;5;9NW;Krausnick;nK
|
848 |
+
66;84;15.10.2021;4;10SE;Hangelsberg;K
|
849 |
+
67;84;15.10.2021;4;10SW;Hangelsberg;nK
|
850 |
+
68;84;13.10.2021;3;12NE;Halbe;K
|
851 |
+
69;84;13.10.2021;0;12NW;Halbe;nK
|
852 |
+
70;84;11.10.2021;2;19NE;Spreeau;K
|
853 |
+
71;84;11.10.2021;2;19NW;Spreeau;nK
|
854 |
+
72;85;26.10.2021;4;3NE;Glienig;K
|
855 |
+
73;85;26.10.2021;6;3NW;Glienig;nK
|
856 |
+
74;85;26.10.2021;5;4NW;Gro� Liebitz;nK
|
857 |
+
75;85;26.10.2021;5;4SE;Gro� Liebitz;K
|
858 |
+
76;85;27.10.2021;5;9NE;Krausnick;K
|
859 |
+
77;85;27.10.2021;4;9NW;Krausnick;nK
|
860 |
+
78;85;27.10.2021;5;10SE;Hangelsberg;K
|
861 |
+
79;85;27.10.2021;7;10SW;Hangelsberg;nK
|
862 |
+
80;85;27.10.2021;4;12NE;Halbe;K
|
863 |
+
81;85;27.10.2021;5;12NW;Halbe;nK
|
864 |
+
82;85;27.10.2021;8;19NE;Spreeau;K
|
865 |
+
83;85;27.10.2021;7;19NW;Spreeau;nK
|
866 |
+
84;86;09.11.2021;45;3NE;Glienig;K
|
867 |
+
85;86;09.11.2021;43;3NW;Glienig;nK
|
868 |
+
86;86;09.11.2021;42;4NW;Gro� Liebitz;nK
|
869 |
+
87;86;09.11.2021;43;4SE;Gro� Liebitz;K
|
870 |
+
88;86;11.11.2021;40;9NE;Krausnick;K
|
871 |
+
89;86;11.11.2021;36;9NW;Krausnick;nK
|
872 |
+
90;86;11.11.2021;45;10SE;Hangelsberg;K
|
873 |
+
91;86;11.11.2021;37;10SW;Hangelsberg;nK
|
874 |
+
92;86;11.11.2021;33;12NE;Halbe;K
|
875 |
+
93;86;11.11.2021;36;12NW;Halbe;nK
|
876 |
+
94;86;11.11.2021;43;19NE;Spreeau;K
|
877 |
+
95;86;11.11.2021;35;19NW;Spreeau;nK
|
878 |
+
96;87;24.11.2021;5;3NE;Glienig;K
|
879 |
+
97;87;24.11.2021;5,5;3NW;Glienig;nK
|
880 |
+
98;87;23.11.2021;3;4NW;Gro� Liebitz;nK
|
881 |
+
99;87;23.11.2021;3;4SE;Gro� Liebitz;K
|
882 |
+
100;87;23.11.2021;2;9NE;Krausnick;K
|
883 |
+
101;87;23.11.2021;2;9NW;Krausnick;nK
|
884 |
+
102;87;26.11.2021;4;10SE;Hangelsberg;K
|
885 |
+
103;87;26.11.2021;4;10SW;Hangelsberg;nK
|
886 |
+
104;87;26.11.2021;2;12NE;Halbe;K
|
887 |
+
105;87;26.11.2021;3;12NW;Halbe;nK
|
888 |
+
106;87;26.11.2021;5;19NE;Spreeau;K
|
889 |
+
107;87;26.11.2021;2;19NW;Spreeau;nK
|
890 |
+
108;88;08.12.2021;17;3NE;Glienig;K
|
891 |
+
109;88;08.12.2021;14;3NW;Glienig;nK
|
892 |
+
110;88;08.12.2021;14;4NW;Gro� Liebitz;nK
|
893 |
+
111;88;08.12.2021;13;4SE;Gro� Liebitz;K
|
894 |
+
112;88;17.12.2021;16;9NE;Krausnick;K
|
895 |
+
113;88;17.12.2021;18,5;9NW;Krausnick;nK
|
896 |
+
114;88;16.12.2021;25;10SE;Hangelsberg;K
|
897 |
+
115;88;16.12.2021;21;10SW;Hangelsberg;nK
|
898 |
+
116;88;17.12.2021;16,5;12NE;Halbe;K
|
899 |
+
117;88;17.12.2021;13;12NW;Halbe;nK
|
900 |
+
118;88;16.12.2021;26;19NE;Spreeau;K
|
901 |
+
119;88;16.12.2021;24;19NW;Spreeau;nK
|
902 |
+
120;89;13.01.2022;49;3NE;Glienig;K
|
903 |
+
121;89;13.01.2022;55;3NW;Glienig;nK
|
904 |
+
122;89;10.01.2022;40;4NW;Gro� Liebitz;nK
|
905 |
+
123;89;10.01.2022;40;4SE;Gro� Liebitz;K
|
906 |
+
124;89;10.01.2022;29;9NE;Krausnick;K
|
907 |
+
125;89;10.01.2022;27;9NW;Krausnick;nK
|
908 |
+
126;89;12.01.2022;25;10SE;Hangelsberg;K
|
909 |
+
127;89;12.01.2022;27;10SW;Hangelsberg;nK
|
910 |
+
128;89;12.01.2022;25;12NE;Halbe;K
|
911 |
+
129;89;12.01.2022;28;12NW;Halbe;nK
|
912 |
+
130;89;12.01.2022;27;19NE;Spreeau;K
|
913 |
+
131;89;12.01.2022;25;19NW;Spreeau;nK
|
914 |
+
132;90;26.01.2022;0;3NE;Glienig;K
|
915 |
+
133;90;26.01.2022;0;3NW;Glienig;nK
|
916 |
+
134;90;26.01.2022;0;4NW;Gro� Liebitz;nK
|
917 |
+
135;90;26.01.2022;0;4SE;Gro� Liebitz;K
|
918 |
+
136;90;25.01.2022;9;9NE;Krausnick;K
|
919 |
+
137;90;25.01.2022;10;9NW;Krausnick;nK
|
920 |
+
138;90;26.01.2022;0;10SE;Hangelsberg;K
|
921 |
+
139;90;26.01.2022;0;10SW;Hangelsberg;nK
|
922 |
+
140;90;25.01.2022;6;12NE;Halbe;K
|
923 |
+
141;90;25.01.2022;6;12NW;Halbe;nK
|
924 |
+
142;90;25.01.2022;10;19NE;Spreeau;K
|
925 |
+
143;90;25.01.2022;8;19NW;Spreeau;nK
|
926 |
+
144;91;15.02.2022;33;3NE;Glienig;K
|
927 |
+
145;91;15.02.2022;36;3NW;Glienig;nK
|
928 |
+
146;91;15.02.2022;24;4NW;Gro� Liebitz;nK
|
929 |
+
147;91;15.02.2022;23;4SE;Gro� Liebitz;K
|
930 |
+
148;91;16.02.2022;19;9NE;Krausnick;K
|
931 |
+
149;91;16.02.2022;18;9NW;Krausnick;nK
|
932 |
+
150;91;16.02.2022;25;10SE;Hangelsberg;K
|
933 |
+
151;91;16.02.2022;27;10SW;Hangelsberg;nK
|
934 |
+
152;91;16.02.2022;17;12NE;Halbe;K
|
935 |
+
153;91;16.02.2022;18;12NW;Halbe;nK
|
936 |
+
154;91;16.02.2022;27;19NE;Spreeau;K
|
937 |
+
155;91;16.02.2022;25;19NW;Spreeau;nK
|
938 |
+
156;92;17.03.2022;23;3NE;Glienig;K
|
939 |
+
157;92;17.03.2022;22;3NW;Glienig;nK
|
940 |
+
158;92;10.03.2022;18;4NW;Gro� Liebitz;nK
|
941 |
+
159;92;10.03.2022;17;4SE;Gro� Liebitz;K
|
942 |
+
160;92;10.03.2022;18;9NE;Krausnick;K
|
943 |
+
161;92;10.03.2022;18;9NW;Krausnick;nK
|
944 |
+
162;92;08.03.2022;18;10SE;Hangelsberg;K
|
945 |
+
163;92;08.03.2022;19;10SW;Hangelsberg;nK
|
946 |
+
164;92;08.03.2022;0;12NE;Halbe;K
|
947 |
+
165;92;08.03.2022;0;12NW;Halbe;nK
|
948 |
+
166;92;08.03.2022;18;19NE;Spreeau;K
|
949 |
+
167;92;08.03.2022;15;19NW;Spreeau;nK
|
950 |
+
168;93;01.04.2022;0;3NE;Glienig;K
|
951 |
+
169;93;01.04.2022;0;3NW;Glienig;nK
|
952 |
+
170;93;29.03.2022;0;4NW;Gro� Liebitz;nK
|
953 |
+
171;93;29.03.2022;0;4SE;Gro� Liebitz;K
|
954 |
+
172;93;29.03.2022;0;9NE;Krausnick;K
|
955 |
+
173;93;29.03.2022;0;9NW;Krausnick;nK
|
956 |
+
174;93;31.03.2022;0;10SE;Hangelsberg;K
|
957 |
+
175;93;31.03.2022;0;10SW;Hangelsberg;nK
|
958 |
+
176;93;31.03.2022;0;12NE;Halbe;K
|
959 |
+
177;93;31.03.2022;0;12NW;Halbe;nK
|
960 |
+
178;93;31.03.2022;0;19NE;Spreeau;K
|
961 |
+
179;93;31.03.2022;0;19NW;Spreeau;nK
|
962 |
+
180;94;20.04.2022;28;3NE;Glienig;K
|
963 |
+
181;94;20.04.2022;31;3NW;Glienig;nK
|
964 |
+
182;94;19.04.2022;20;4NW;Gro� Liebitz;nK
|
965 |
+
183;94;19.04.2022;19;4SE;Gro� Liebitz;K
|
966 |
+
184;94;19.04.2022;21;9NE;Krausnick;K
|
967 |
+
185;94;19.04.2022;21;9NW;Krausnick;nK
|
968 |
+
186;94;22.04.2022;19;10SE;Hangelsberg;K
|
969 |
+
187;94;22.04.2022;21;10SW;Hangelsberg;nK
|
970 |
+
188;94;22.04.2022;19;12NE;Halbe;K
|
971 |
+
189;94;22.04.2022;20;12NW;Halbe;nK
|
972 |
+
190;94;22.04.2022;20;19NE;Spreeau;K
|
973 |
+
191;94;22.04.2022;15;19NW;Spreeau;nK
|
974 |
+
192;95;18.05.2022;9;3NE;Glienig;K
|
975 |
+
193;95;18.05.2022;5;3NW;Glienig;nK
|
976 |
+
194;95;10.05.2022;5;4NW;Gro� Liebitz;nK
|
977 |
+
195;95;10.05.2022;7;4SE;Gro� Liebitz;K
|
978 |
+
196;95;10.05.2022;6;9NE;Krausnick;K
|
979 |
+
197;95;10.05.2022;4;9NW;Krausnick;nK
|
980 |
+
198;95;12.05.2022;7;10SE;Hangelsberg;K
|
981 |
+
199;95;12.05.2022;6;10SW;Hangelsberg;nK
|
982 |
+
200;95;12.05.2022;0;12NE;Halbe;K
|
983 |
+
201;95;12.05.2022;0;12NW;Halbe;nK
|
984 |
+
202;95;12.05.2022;4;19NE;Spreeau;K
|
985 |
+
203;95;12.05.2022;3;19NW;Spreeau;nK
|
986 |
+
204;96;01.06.2022;31;3NE;Glienig;K
|
987 |
+
205;96;01.06.2022;31;3NW;Glienig;nK
|
988 |
+
206;96;01.06.2022;28,5;4NW;Gro� Liebitz;nK
|
989 |
+
207;96;01.06.2022;30,5;4SE;Gro� Liebitz;K
|
990 |
+
208;96;02.06.2022;23;9NE;Krausnick;K
|
991 |
+
209;96;02.06.2022;19,5;9NW;Krausnick;nK
|
992 |
+
210;96;02.06.2022;10;10SE;Hangelsberg;K
|
993 |
+
211;96;02.06.2022;12;10SW;Hangelsberg;nK
|
994 |
+
212;96;02.06.2022;24;12NE;Halbe;K
|
995 |
+
213;96;02.06.2022;32;12NW;Halbe;nK
|
996 |
+
214;96;02.06.2022;15;19NE;Spreeau;K
|
997 |
+
215;96;02.06.2022;14;19NW;Spreeau;nK
|
998 |
+
216;97;22.06.2022;30;3NE;Glienig;K
|
999 |
+
217;97;22.06.2022;25;3NW;Glienig;nK
|
1000 |
+
218;97;22.06.2022;53;4NW;Gro� Liebitz;nK
|
1001 |
+
219;97;22.06.2022;54;4SE;Gro� Liebitz;K
|
1002 |
+
220;97;20.06.2022;25;9NE;Krausnick;K
|
1003 |
+
221;97;20.06.2022;20;9NW;Krausnick;nK
|
1004 |
+
222;97;20.06.2022;24;10SE;Hangelsberg;K
|
1005 |
+
223;97;20.06.2022;22;10SW;Hangelsberg;nK
|
1006 |
+
224;97;20.06.2022;16;12NE;Halbe;K
|
1007 |
+
225;97;20.06.2022;17;12NW;Halbe;nK
|
1008 |
+
226;97;22.06.2022;17;19NE;Spreeau;K
|
1009 |
+
227;97;22.06.2022;15;19NW;Spreeau;nK
|
1010 |
+
228;98;12.07.2022;11;3NE;Glienig;K
|
1011 |
+
229;98;12.07.2022;11;3NW;Glienig;nK
|
1012 |
+
230;98;12.07.2022;19;4NW;Gro� Liebitz;nK
|
1013 |
+
231;98;12.07.2022;21;4SE;Gro� Liebitz;K
|
1014 |
+
232;98;14.07.2022;18;9NE;Krausnick;K
|
1015 |
+
233;98;14.07.2022;15;9NW;Krausnick;nK
|
1016 |
+
234;98;14.07.2022;12;10SE;Hangelsberg;K
|
1017 |
+
235;98;14.07.2022;16;10SW;Hangelsberg;nK
|
1018 |
+
236;98;14.07.2022;10;12NE;Halbe;K
|
1019 |
+
237;98;14.07.2022;16,5;12NW;Halbe;nK
|
1020 |
+
238;98;14.07.2022;9;19NE;Spreeau;K
|
1021 |
+
239;98;14.07.2022;8,5;19NW;Spreeau;nK
|
1022 |
+
240;99;09.08.2022;12;3NE;Glienig;K
|
1023 |
+
241;99;09.08.2022;11;3NW;Glienig;nK
|
1024 |
+
242;99;09.08.2022;4;4NW;Gro� Liebitz;nK
|
1025 |
+
243;99;09.08.2022;3,5;4SE;Gro� Liebitz;K
|
1026 |
+
244;99;09.08.2022;14;9NE;Krausnick;K
|
1027 |
+
245;99;09.08.2022;11;9NW;Krausnick;nK
|
1028 |
+
246;99;11.08.2022;12;10SE;Hangelsberg;K
|
1029 |
+
247;99;11.08.2022;14;10SW;Hangelsberg;nK
|
1030 |
+
248;99;10.08.2022;10;12NE;Halbe;K
|
1031 |
+
249;99;10.08.2022;13;12NW;Halbe;nK
|
1032 |
+
250;99;11.08.2022;6;19NE;Spreeau;K
|
1033 |
+
251;99;11.08.2022;4;19NW;Spreeau;nK
|
1034 |
+
252;100;02.09.2022;12;3NE;Glienig;K
|
1035 |
+
253;100;02.09.2022;12;3NW;Glienig;nK
|
1036 |
+
254;100;02.09.2022;83;4NW;Gro� Liebitz;nK
|
1037 |
+
255;100;02.09.2022;91;4SE;Gro� Liebitz;K
|
1038 |
+
256;100;02.09.2022;20,5;9NE;Krausnick;K
|
1039 |
+
257;100;02.09.2022;;9NW;Krausnick;nK
|
1040 |
+
258;100;30.08.2022;42;10SE;Hangelsberg;K
|
1041 |
+
259;100;30.08.2022;39;10SW;Hangelsberg;nK
|
1042 |
+
260;100;30.08.2022;36;12NE;Halbe;K
|
1043 |
+
261;100;30.08.2022;49;12NW;Halbe;nK
|
1044 |
+
262;100;30.08.2022;30;19NE;Spreeau;K
|
1045 |
+
263;100;30.08.2022;29;19NW;Spreeau;nK
|
1046 |
+
264;101;28.09.2022;40;3NE;Glienig;K
|
1047 |
+
265;101;28.09.2022;40;3NW;Glienig;nK
|
1048 |
+
266;101;29.09.2022;40;4NW;Gro� Liebitz;nK
|
1049 |
+
267;101;29.09.2022;42;4SE;Gro� Liebitz;K
|
1050 |
+
268;101;30.09.2022;37;9NE;Krausnick;K
|
1051 |
+
269;101;30.09.2022;50;9NW;Krausnick;nK
|
1052 |
+
270;101;05.10.2022;57,5;10SE;Hangelsberg;K
|
1053 |
+
271;101;05.10.2022;61;10SW;Hangelsberg;nK
|
1054 |
+
272;101;06.10.2022;44;12NE;Halbe;K
|
1055 |
+
273;101;06.10.2022;51;12NW;Halbe;nK
|
1056 |
+
274;101;04.10.2022;45;19NE;Spreeau;K
|
1057 |
+
275;101;04.10.2022;41;19NW;Spreeau;nK
|
1058 |
+
276;102;20.10.2022;18;3NE;Glienig;K
|
1059 |
+
277;102;20.10.2022;16,5;3NW;Glienig;nK
|
1060 |
+
278;102;21.10.2022;19,5;4NW;Gro� Liebitz;nK
|
1061 |
+
279;102;21.10.2022;22;4SE;Gro� Liebitz;K
|
1062 |
+
280;102;21.10.2022;18;9NE;Krausnick;K
|
1063 |
+
281;102;21.10.2022;13;9NW;Krausnick;nK
|
1064 |
+
282;102;21.10.2022;11;10SE;Hangelsberg;K
|
1065 |
+
283;102;21.10.2022;14;10SW;Hangelsberg;nK
|
1066 |
+
284;102;21.10.2022;10;12NE;Halbe;K
|
1067 |
+
285;102;21.10.2022;11,5;12NW;Halbe;nK
|
1068 |
+
286;102;21.10.2022;12;19NE;Spreeau;K
|
1069 |
+
287;102;21.10.2022;13;19NW;Spreeau;nK
|
1070 |
+
288;103;09.11.2022;14;3NE;Glienig;K
|
1071 |
+
289;103;09.11.2022;13;3NW;Glienig;nK
|
1072 |
+
290;103;10.11.2022;21;4NW;Gro� Liebitz;nK
|
1073 |
+
291;103;10.11.2022;25;4SE;Gro� Liebitz;K
|
1074 |
+
292;103;10.11.2022;14,5;9NE;Krausnick;K
|
1075 |
+
293;103;10.11.2022;12;9NW;Krausnick;nK
|
1076 |
+
294;103;08.11.2022;12;10SE;Hangelsberg;K
|
1077 |
+
295;103;08.11.2022;14;10SW;Hangelsberg;nK
|
1078 |
+
296;103;08.11.2022;13;12NE;Halbe;K
|
1079 |
+
297;103;08.11.2022;16;12NW;Halbe;nK
|
1080 |
+
298;103;08.11.2022;8;19NE;Spreeau;K
|
1081 |
+
299;103;08.11.2022;9;19NW;Spreeau;nK
|
Niederschlag.py
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""
|
3 |
+
Created on Fri Mar 3 12:57:17 2023
|
4 |
+
|
5 |
+
@author: BorowyP
|
6 |
+
"""
|
7 |
+
|
8 |
+
import pandas as pd
|
9 |
+
import numpy as np
|
10 |
+
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes
|
11 |
+
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework
|
12 |
+
import holoviews as hv
|
13 |
+
from holoviews.operation.timeseries import rolling, rolling_outlier_std
|
14 |
+
|
15 |
+
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ]
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
df_nied = pd.read_csv('Nied_holzdeko_csv.csv' ,
|
20 |
+
encoding_errors='ignore',
|
21 |
+
sep=';',
|
22 |
+
usecols=[1,2, 3, 4,5,6],
|
23 |
+
decimal=',')
|
24 |
+
|
25 |
+
def createStndrt(stnd_kennz, Stndrt,K_nK):
|
26 |
+
df = df_nied.loc[df_nied['FNR + NWP'] == stnd_kennz].copy()
|
27 |
+
df['Standort'] = Stndrt
|
28 |
+
df['K_nK'] = K_nK
|
29 |
+
|
30 |
+
df.index = pd.to_datetime(df_nied.loc[df_nied['FNR + NWP'] == '3NE']['MessDat'], dayfirst=True)
|
31 |
+
|
32 |
+
if K_nK == 'K':
|
33 |
+
df['K'] = df['Menge']
|
34 |
+
else:
|
35 |
+
df['nK'] = df['Menge']
|
36 |
+
|
37 |
+
return df
|
38 |
+
|
39 |
+
glienig_nied_K = createStndrt('3NE', 'Glienig','K')
|
40 |
+
glienig_nied_nK = createStndrt('3NW', 'Glienig','nK')
|
41 |
+
|
42 |
+
grlieb_nied_K = createStndrt('4SE', 'Groß Liebitz','K')
|
43 |
+
grlieb_nied_nK= createStndrt('4NW', 'Groß Liebitz','nK')
|
44 |
+
|
45 |
+
krausnick_nied_K = createStndrt('9NE', 'Krausnick','K')
|
46 |
+
krausnick_nied_nK = createStndrt('9NW', 'Krausnick','nK')
|
47 |
+
|
48 |
+
hberg_nied_K = createStndrt('10SE', 'Hangelsberg','K')
|
49 |
+
hberg_nied_nK = createStndrt('10SW', 'Hangelsberg','nK')
|
50 |
+
|
51 |
+
halbe_nied_K = createStndrt('12NE', 'Halbe','K')
|
52 |
+
halbe_nied_nK = createStndrt('12NW', 'Halbe','nK')
|
53 |
+
|
54 |
+
spreeau_nied_K = createStndrt('19NE', 'Spreeau','K')
|
55 |
+
spreeau_nied_nK = createStndrt('19NW', 'Spreeau','nK')
|
56 |
+
|
57 |
+
nied = pd.concat([glienig_nied_K,glienig_nied_nK,
|
58 |
+
grlieb_nied_K, grlieb_nied_nK,
|
59 |
+
krausnick_nied_K, krausnick_nied_nK,
|
60 |
+
hberg_nied_K, hberg_nied_nK,
|
61 |
+
halbe_nied_K, halbe_nied_nK,
|
62 |
+
spreeau_nied_K, spreeau_nied_nK])
|
63 |
+
|
64 |
+
nied = nied.drop(nied.columns[[1]], axis=1)
|
65 |
+
|
66 |
+
nied_inter = nied.interactive()
|
67 |
+
|
68 |
+
|
69 |
+
yaxis = pn.widgets.ToggleGroup(
|
70 |
+
name='Kalkung',
|
71 |
+
options=['K','nK'],
|
72 |
+
value=['K'],
|
73 |
+
button_type='success')
|
74 |
+
|
75 |
+
|
76 |
+
nied_date_slider = pn.widgets.DateRangeSlider(name='Date', start=nied.index.min(), end=nied.index.max())
|
77 |
+
|
78 |
+
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success')
|
79 |
+
|
80 |
+
nied_pipe = (
|
81 |
+
nied_inter[
|
82 |
+
(nied_inter.Standort == Stndrt ) &
|
83 |
+
(nied_inter.K_nK.isin(yaxis)) &
|
84 |
+
(nied_inter.index >= nied_date_slider.param.value_start) &
|
85 |
+
(nied_inter.index <= nied_date_slider.param.value_end)
|
86 |
+
]
|
87 |
+
.groupby(['MessDat'])[yaxis].mean()
|
88 |
+
)
|
89 |
+
|
90 |
+
nied_lin_plot = nied_pipe.hvplot(x='MessDat',
|
91 |
+
xlabel='Datum',
|
92 |
+
y=yaxis,
|
93 |
+
#y='Menge',
|
94 |
+
ylabel= 'Niederschlag [mm]',
|
95 |
+
title=Stndrt,
|
96 |
+
#by='origin',
|
97 |
+
color=PALETTE,
|
98 |
+
line_width=2)
|
99 |
+
|
100 |
+
|
101 |
+
|
102 |
+
|
103 |
+
|
104 |
+
nied_lin_plot
|
105 |
+
|
106 |
+
summe = (
|
107 |
+
nied_inter[
|
108 |
+
(nied_inter.index >= nied_date_slider.param.value_start) &
|
109 |
+
(nied_inter.index <= nied_date_slider.param.value_end)]
|
110 |
+
.groupby(['Standort', 'K_nK']).sum()
|
111 |
+
)
|
112 |
+
summe_plot = summe.hvplot(x='Standort', y=('Menge'), by='K_nK', kind='bar',
|
113 |
+
title='Summe Niederschlag', xlabel='Standort', ylabel='Menge [mm]')
|
114 |
+
|
115 |
+
|
116 |
+
|
117 |
+
hd_logo = pn.pane.PNG('HD_Logo.png', width=100)
|
118 |
+
hd_logo
|
119 |
+
|
120 |
+
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100)
|
121 |
+
|
122 |
+
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100)
|
123 |
+
|
124 |
+
template = pn.template.FastListTemplate(
|
125 |
+
title='Holzdeko Dashboard',
|
126 |
+
sidebar=[hd_logo,
|
127 |
+
pn.pane.Markdown("## Einstellungen"),
|
128 |
+
'Standort',Stndrt,
|
129 |
+
'gekalkt/ungekalkt', yaxis,
|
130 |
+
lfe_logo,
|
131 |
+
fnr_logo
|
132 |
+
#'Boden',
|
133 |
+
#'Gekalkt/ungekalkt', yaxis,
|
134 |
+
],
|
135 |
+
main=[pn.pane.Markdown("## Niederschlag"),
|
136 |
+
nied_date_slider,
|
137 |
+
nied_lin_plot.panel(),
|
138 |
+
summe_plot,#.panel() #NIEDERSCHLAG
|
139 |
+
#accent_base_color="#88d8b0",
|
140 |
+
#header_background="#88d8b0",
|
141 |
+
])
|
142 |
+
|
143 |
+
|
144 |
+
|
145 |
+
|
146 |
+
template.servable();
|
147 |
+
|
148 |
+
#print('fertig!')
|
149 |
+
# To launch this dashboard as a web server, we can simply run
|
150 |
+
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\soil_air\
|
151 |
+
# panel serve 20230303_niederschlag_docker.ipynb --autoreload
|
Stahlrahmen-Fotos/Glienig/K/mA/resized20210901_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20210914_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20210929_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20211014_GLI_3NE_K_mA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20211026_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20211109_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20211124_GLI_3NE_K_mA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20211208_GLI_3NE_K_mA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220215_GLI_3NE_K_mA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220317_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220401_GLI_3NE_K_mA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220420_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220518_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220601_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220712_GLI_3NE_K_mA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20220809_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20221020_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/mA/resized20221129_GLI_3NE_K_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20210929_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20211014_GLI_3NE_K_oA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20211026_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20211109_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20211124_GLI_3NE_K_oA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20211208_GLI_3NE_K_oA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220215_GLI_3NE_K_oA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220317_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220401_GLI_3NE_K_oA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220420_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220518_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220601_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220712_GLI_3NE_K_oA.JPG
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20220809_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20221020_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/K/oA/resized20221129_GLI_3NE_K_oA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/nK/mA/resized20210914_GLI_3NW_nK_mA.jpg
ADDED
Stahlrahmen-Fotos/Glienig/nK/mA/resized20211014_GLI_3NW_nK_mA.JPG
ADDED