Move updatewrmapcache.py to scripts folder.
[philipp/winterrodeln/wrpylib.git] / tests / test_wrmwmarkup.py
1 #!/usr/bin/python3.4
2 import collections
3 import textwrap
4 import unittest
5 import mwparserfromhell
6 import wrpylib.wrvalidators
7 import wrpylib.wrmwmarkup
8 from wrpylib.wrvalidators import LonLat
9 from wrpylib.wrmwmarkup import sledrun_from_rodelbahnbox, sledrun_to_rodelbahnbox, \
10     inn_from_gasthausbox, inn_to_gasthausbox, lonlat_ele_from_template, latlon_ele_to_template
11
12
13 class TestSledrun(unittest.TestCase):
14     def test_sledrun_from_rodelbahnbox(self):
15         class Sledrun:
16             pass
17         rodelbahnbox = collections.OrderedDict([
18             ('Position', LonLat(9.986508, 47.30982)),
19             ('Position oben', LonLat(None, None)),
20             ('Höhe oben', 1244),
21             ('Position unten', LonLat(8.506047, 46.20210)),
22             ('Höhe unten', None),
23             ('Länge', 5045),
24             ('Schwierigkeit', 3),
25             ('Lawinen', 2),
26             ('Betreiber', 'SchneeFunFit'),
27             ('Öffentliche Anreise', 2),
28             ('Aufstieg möglich', True),
29             ('Aufstieg getrennt', (0.0, None)),
30             ('Gehzeit', 105),
31             ('Aufstiegshilfe', [('Sessellift', 'gratis'), ('Bus', None)]),
32             ('Beleuchtungsanlage', (0.0, 'in Planung für 2020')),
33             ('Beleuchtungstage', (None, None)),
34             ('Rodelverleih', []),
35             ('Gütesiegel', []),
36             ('Webauskunft', (True, 'http://example.com/schneelage')),
37             ('Telefonauskunft', [('+43-664-1808482', 'Bergkristallhütte')]),
38             ('Bild', 'Rodelbahn Bergkristallhütte 2009-03-03.jpg'),
39             ('In Übersichtskarte', True),
40             ('Forumid', 72)])
41         sledrun = Sledrun()
42         sledrun_from_rodelbahnbox(rodelbahnbox, sledrun)
43         self.assertEqual(47.30982, sledrun.position_latitude)
44         self.assertEqual(9.986508, sledrun.position_longitude)
45         self.assertEqual(None, sledrun.top_latitude)
46         self.assertEqual(None, sledrun.top_longitude)
47         self.assertEqual(1244, sledrun.top_elevation)
48         self.assertEqual(46.20210, sledrun.bottom_latitude)
49         self.assertEqual(8.506047, sledrun.bottom_longitude)
50         self.assertEqual(None, sledrun.bottom_elevation)
51         self.assertEqual(5045, sledrun.length)
52         self.assertEqual(3, sledrun.difficulty)
53         self.assertEqual(2, sledrun.avalanches)
54         self.assertEqual('SchneeFunFit', sledrun.operator)
55         self.assertEqual(2, sledrun.public_transport)
56         self.assertEqual(True, sledrun.walkup_possible)
57         self.assertEqual(105, sledrun.walkup_time)
58         self.assertEqual(0.0, sledrun.walkup_separate)
59         self.assertEqual(None, sledrun.walkup_separate_comment)
60         self.assertEqual(True, sledrun.lift)
61         self.assertEqual('Sessellift (gratis); Bus', sledrun.lift_details)
62         self.assertEqual(0.0, sledrun.night_light)
63         self.assertEqual('in Planung für 2020', sledrun.night_light_comment)
64         self.assertEqual(None, sledrun.night_light_days)
65         self.assertEqual(None, sledrun.night_light_days_comment)
66         self.assertEqual(False, sledrun.sled_rental)
67         self.assertEqual('Nein', sledrun.sled_rental_comment)
68         self.assertEqual('Nein', sledrun.cachet)
69         self.assertEqual('http://example.com/schneelage', sledrun.information_web)
70         self.assertEqual('+43-664-1808482 (Bergkristallhütte)', sledrun.information_phone)
71         self.assertEqual('Rodelbahn Bergkristallhütte 2009-03-03.jpg', sledrun.image)
72         self.assertEqual(True, sledrun.show_in_overview)
73         self.assertEqual(72, sledrun.forum_id)
74
75     def test_sledrun_to_rodelbahnbox(self):
76         class Sledrun:
77             pass
78         sledrun = Sledrun()
79         sledrun.position_longitude = 13.5
80         sledrun.position_latitude = 50.7
81         sledrun.top_longitude = 12.2
82         sledrun.top_latitude = 49.8
83         sledrun.top_elevation = 3456
84         sledrun.bottom_longitude = 9.89
85         sledrun.bottom_latitude = 51.2
86         sledrun.bottom_elevation = 2075
87         sledrun.length = 9644
88         sledrun.difficulty = 3
89         sledrun.avalanches = 2
90         sledrun.operator = 'McRodel'
91         sledrun.public_transport = 3
92         sledrun.walkup_possible = True
93         sledrun.walkup_time = 77
94         sledrun.walkup_separate = 0.5
95         sledrun.walkup_separate_comment = 'Nur unterer Teil'
96         sledrun.lift = True
97         sledrun.lift_details = 'Sessellift'
98         sledrun.night_light = 1.0
99         sledrun.night_light_comment = 'Schlecht beleuchtet'
100         sledrun.night_light_days = 6
101         sledrun.night_light_days_comment = 'Mo-Sa'
102         sledrun.sled_rental = True
103         sledrun.sled_rental_comment = 'In der Hütte'
104         sledrun.cachet = 'Tiroler Rodelbahngütesielgel mittelschwer 2010'
105         sledrun.information_web = 'http://example.com'
106         sledrun.information_phone = '+4364412345678'
107         sledrun.image = 'Sicht_von_unten.jpg'
108         sledrun.show_in_overview = True
109         sledrun.forum_id = 65
110         rodelbahnbox = sledrun_to_rodelbahnbox(sledrun)
111         self.assertEqual(rodelbahnbox['Position'], LonLat(lon=13.5, lat=50.7))
112         self.assertEqual(rodelbahnbox['Position oben'], LonLat(12.2, 49.8))
113         self.assertEqual(rodelbahnbox['Höhe oben'], 3456)
114         self.assertEqual(rodelbahnbox['Position unten'], LonLat(9.89, 51.2))
115         self.assertEqual(rodelbahnbox['Höhe unten'], 2075)
116         self.assertEqual(rodelbahnbox['Länge'], 9644)
117         self.assertEqual(rodelbahnbox['Schwierigkeit'], 3)
118         self.assertEqual(rodelbahnbox['Lawinen'], 2)
119         self.assertEqual(rodelbahnbox['Betreiber'], 'McRodel')
120         self.assertEqual(rodelbahnbox['Öffentliche Anreise'], 3)
121         self.assertEqual(rodelbahnbox['Aufstieg möglich'], True)
122         self.assertEqual(rodelbahnbox['Aufstieg getrennt'], (0.5, 'Nur unterer Teil'))
123         self.assertEqual(rodelbahnbox['Gehzeit'], 77)
124         self.assertEqual(rodelbahnbox['Aufstiegshilfe'], [('Sessellift', None)])
125         self.assertEqual(rodelbahnbox['Beleuchtungsanlage'], (1.0, 'Schlecht beleuchtet'))
126         self.assertEqual(rodelbahnbox['Beleuchtungstage'], (6, 'Mo-Sa'))
127         self.assertEqual(rodelbahnbox['Rodelverleih'], (True, 'In der Hütte'))
128         self.assertEqual(rodelbahnbox['Gütesiegel'], 'Tiroler Rodelbahngütesielgel mittelschwer 2010')
129         self.assertEqual(rodelbahnbox['Webauskunft'], 'http://example.com')
130         self.assertEqual(rodelbahnbox['Bild'], 'Sicht_von_unten.jpg')
131         self.assertEqual(rodelbahnbox['In Übersichtskarte'], True)
132         self.assertEqual(rodelbahnbox['Forumid'], 65)
133
134
135 class TestInn(unittest.TestCase):
136     def test_inn_from_gasthausbox(self):
137         class Inn:
138             pass
139         gasthausbox = collections.OrderedDict()
140         gasthausbox['Position'] = LonLat(11.015883, 9.876000)
141         gasthausbox['Höhe'] = 2145
142         gasthausbox['Betreiber'] = 'Max Mustermann'
143         gasthausbox['Sitzplätze'] = 30
144         gasthausbox['Übernachtung'] = (True, '2 Zimmer')
145         gasthausbox['Rauchfrei'] = 0.5
146         gasthausbox['Rodelverleih'] = (True, '6 Euro')
147         gasthausbox['Handyempfang'] = [('A1', None), ('Drei', 'schlecht')]
148         gasthausbox['Homepage'] = (True, 'http://www.graf-ferdinand.at/')
149         gasthausbox['E-Mail'] = [(('max.mustermann@graf-ferdinand.at', False), None), (('ich@example.com', True), 'privat')]
150         gasthausbox['Telefon'] = [('+43-5039-21666', None), ('+43-686-4134880', 'Sommer')]
151         gasthausbox['Bild'] = 'Gasthaus_Graf_Ferdinand_Haus_01.jpg'
152         gasthausbox['Rodelbahnen'] = ['[[Finstertaler Speicher]]', '[[Birgitzer Alm]]']
153         inn = Inn()
154         inn_from_gasthausbox(gasthausbox, inn)
155         self.assertEqual(inn.position_latitude, 9.876000)
156         self.assertEqual(inn.position_longitude, 11.015883)
157         self.assertEqual(inn.position_elevation, 2145)
158         self.assertEqual(inn.operator, 'Max Mustermann')
159         self.assertEqual(inn.seats, 30)
160         self.assertEqual(inn.overnight, True)
161         self.assertEqual(inn.overnight_comment, '2 Zimmer')
162         self.assertEqual(inn.smoker_area, True)
163         self.assertEqual(inn.nonsmoker_area, True)
164         self.assertEqual(inn.sled_rental, True)
165         self.assertEqual(inn.sled_rental_comment, '6 Euro')
166         self.assertEqual(inn.mobile_provider, 'A1; Drei (schlecht)')
167         self.assertEqual(inn.homepage, 'http://www.graf-ferdinand.at/')
168         self.assertEqual(inn.email_list, 'max.mustermann@graf-ferdinand.at; ich(at)example.com (privat)')
169         self.assertEqual(inn.phone_list, '+43-5039-21666; +43-686-4134880 (Sommer)')
170         self.assertEqual(inn.image, 'Gasthaus_Graf_Ferdinand_Haus_01.jpg')
171         self.assertEqual(inn.sledding_list, '[[Finstertaler Speicher]]; [[Birgitzer Alm]]')
172
173     def test_inn_to_gasthausbox(self):
174         class Inn:
175             pass
176         inn = Inn()
177         inn.position_latitude = 9.876000
178         inn.position_longitude = 11.015883
179         inn.position_elevation = 2145
180         inn.operator = 'Max Mustermann'
181         inn.seats = 30
182         inn.overnight = True
183         inn.overnight_comment = '2 Zimmer'
184         inn.smoker_area = True
185         inn.nonsmoker_area = True
186         inn.sled_rental = True
187         inn.sled_rental_comment = '6 Euro'
188         inn.mobile_provider = 'A1; Drei (schlecht)'
189         inn.homepage = 'http://www.graf-ferdinand.at/'
190         inn.email_list = 'max.mustermann@graf-ferdinand.at; ich(at)example.com (privat)'
191         inn.phone_list = '+43-5039-21666; +43-686-4134880 (Sommer)'
192         inn.image = 'Gasthaus_Graf_Ferdinand_Haus_01.jpg'
193         inn.sledding_list = '[[Finstertaler Speicher]]; [[Birgitzer Alm]]'
194         gasthausbox = inn_to_gasthausbox(inn)
195         self.assertEqual(gasthausbox['Position'], LonLat(11.015883, 9.876000))
196         self.assertEqual(gasthausbox['Höhe'], 2145)
197         self.assertEqual(gasthausbox['Betreiber'], 'Max Mustermann')
198         self.assertEqual(gasthausbox['Sitzplätze'], 30)
199         self.assertEqual(gasthausbox['Übernachtung'], (True, '2 Zimmer'))
200         self.assertEqual(gasthausbox['Rauchfrei'], 0.5)
201         self.assertEqual(gasthausbox['Rodelverleih'], (True, '6 Euro'))
202         self.assertEqual(gasthausbox['Handyempfang'], [('A1', None), ('Drei', 'schlecht')])
203         self.assertEqual(gasthausbox['Homepage'], (True, 'http://www.graf-ferdinand.at/'))
204         self.assertEqual(gasthausbox['E-Mail'], [(('max.mustermann@graf-ferdinand.at', False), None), (('ich@example.com', True), 'privat')])
205         self.assertEqual(gasthausbox['Telefon'], [('+43-5039-21666', None), ('+43-686-4134880', 'Sommer')])
206         self.assertEqual(gasthausbox['Bild'], 'Gasthaus_Graf_Ferdinand_Haus_01.jpg')
207         self.assertEqual(gasthausbox['Rodelbahnen'], ['[[Finstertaler Speicher]]', '[[Birgitzer Alm]]'])
208
209     def test_inn_from_gasthausbox_no(self):
210         class Inn:
211             pass
212         gasthausbox = collections.OrderedDict()
213         gasthausbox['Position'] = LonLat(None, None)
214         gasthausbox['Höhe'] = None
215         gasthausbox['Betreiber'] = None
216         gasthausbox['Sitzplätze'] = None
217         gasthausbox['Übernachtung'] = (False, None)
218         gasthausbox['Rauchfrei'] = 0.0
219         gasthausbox['Rodelverleih'] = (False, None)
220         gasthausbox['Handyempfang'] = []
221         gasthausbox['Homepage'] = (False, None)
222         gasthausbox['E-Mail'] = []
223         gasthausbox['Telefon'] = []
224         gasthausbox['Bild'] = None
225         gasthausbox['Rodelbahnen'] = []
226         inn = Inn()
227         inn_from_gasthausbox(gasthausbox, inn)
228         self.assertEqual(inn.position_latitude, None)
229         self.assertEqual(inn.position_longitude, None)
230         self.assertEqual(inn.position_elevation, None)
231         self.assertEqual(inn.operator, None)
232         self.assertEqual(inn.seats, None)
233         self.assertEqual(inn.overnight, False)
234         self.assertEqual(inn.overnight_comment, None)
235         self.assertEqual(inn.smoker_area, True)
236         self.assertEqual(inn.nonsmoker_area, False)
237         self.assertEqual(inn.sled_rental, False)
238         self.assertEqual(inn.sled_rental_comment, None)
239         self.assertEqual(inn.mobile_provider, 'Nein')
240         self.assertEqual(inn.homepage, 'Nein')
241         self.assertEqual(inn.email_list, 'Nein')
242         self.assertEqual(inn.phone_list, 'Nein')
243         self.assertEqual(inn.image, None)
244         self.assertEqual(inn.sledding_list, 'Nein')
245
246     def test_inn_to_gasthausbox_no(self):
247         class Inn:
248             pass
249         inn = Inn()
250         inn.position_latitude = None
251         inn.position_longitude = None
252         inn.position_elevation = None
253         inn.operator = None
254         inn.seats = None
255         inn.overnight = False
256         inn.overnight_comment = None
257         inn.smoker_area = True
258         inn.nonsmoker_area = False
259         inn.sled_rental = False
260         inn.sled_rental_comment = None
261         inn.mobile_provider = 'Nein'
262         inn.homepage = 'Nein'
263         inn.email_list = 'Nein'
264         inn.phone_list = 'Nein'
265         inn.image = None
266         inn.sledding_list = 'Nein'
267         gasthausbox = inn_to_gasthausbox(inn)
268         self.assertEqual(gasthausbox['Position'], LonLat(None, None))
269         self.assertEqual(gasthausbox['Höhe'], None)
270         self.assertEqual(gasthausbox['Betreiber'], None)
271         self.assertEqual(gasthausbox['Sitzplätze'], None)
272         self.assertEqual(gasthausbox['Übernachtung'], (False, None))
273         self.assertEqual(gasthausbox['Rauchfrei'], 0.0)
274         self.assertEqual(gasthausbox['Rodelverleih'], (False, None))
275         self.assertEqual(gasthausbox['Handyempfang'], [])
276         self.assertEqual(gasthausbox['Homepage'], (False, None))
277         self.assertEqual(gasthausbox['E-Mail'], [])
278         self.assertEqual(gasthausbox['Telefon'], [])
279         self.assertEqual(gasthausbox['Bild'], None)
280         self.assertEqual(gasthausbox['Rodelbahnen'], [])
281
282     def test_inn_from_gasthausbox_none(self):
283         class Inn:
284             pass
285         gasthausbox = collections.OrderedDict()
286         gasthausbox['Position'] = LonLat(None, None)
287         gasthausbox['Höhe'] = None
288         gasthausbox['Betreiber'] = None
289         gasthausbox['Sitzplätze'] = None
290         gasthausbox['Übernachtung'] = (None, None)
291         gasthausbox['Rauchfrei'] = None
292         gasthausbox['Rodelverleih'] = (None, None)
293         gasthausbox['Handyempfang'] = None
294         gasthausbox['Homepage'] = (None, None)
295         gasthausbox['E-Mail'] = None
296         gasthausbox['Telefon'] = None
297         gasthausbox['Bild'] = None
298         gasthausbox['Rodelbahnen'] = None
299         inn = Inn()
300         inn_from_gasthausbox(gasthausbox, inn)
301         self.assertEqual(inn.position_latitude, None)
302         self.assertEqual(inn.position_longitude, None)
303         self.assertEqual(inn.position_elevation, None)
304         self.assertEqual(inn.operator, None)
305         self.assertEqual(inn.seats, None)
306         self.assertEqual(inn.overnight, None)
307         self.assertEqual(inn.overnight_comment, None)
308         self.assertEqual(inn.smoker_area, None)
309         self.assertEqual(inn.nonsmoker_area, None)
310         self.assertEqual(inn.sled_rental, None)
311         self.assertEqual(inn.sled_rental_comment, None)
312         self.assertEqual(inn.mobile_provider, None)
313         self.assertEqual(inn.homepage, None)
314         self.assertEqual(inn.email_list, None)
315         self.assertEqual(inn.phone_list, None)
316         self.assertEqual(inn.image, None)
317         self.assertEqual(inn.sledding_list, None)
318
319     def test_inn_to_gasthausbox_none(self):
320         class Inn:
321             pass
322         inn = Inn()
323         inn.position_latitude = None
324         inn.position_longitude = None
325         inn.position_elevation = None
326         inn.operator = None
327         inn.seats = None
328         inn.overnight = None
329         inn.overnight_comment = None
330         inn.smoker_area = None
331         inn.nonsmoker_area = None
332         inn.sled_rental = None
333         inn.sled_rental_comment = None
334         inn.mobile_provider = None
335         inn.homepage = None
336         inn.email_list = None
337         inn.phone_list = None
338         inn.image = None
339         inn.sledding_list = None
340         gasthausbox = inn_to_gasthausbox(inn)
341         self.assertEqual(gasthausbox['Position'], LonLat(None, None))
342         self.assertEqual(gasthausbox['Höhe'], None)
343         self.assertEqual(gasthausbox['Betreiber'], None)
344         self.assertEqual(gasthausbox['Sitzplätze'], None)
345         self.assertEqual(gasthausbox['Übernachtung'], (None, None))
346         self.assertEqual(gasthausbox['Rauchfrei'], None)
347         self.assertEqual(gasthausbox['Rodelverleih'], (None, None))
348         self.assertEqual(gasthausbox['Handyempfang'], None)
349         self.assertEqual(gasthausbox['Homepage'], (None, None))
350         self.assertEqual(gasthausbox['E-Mail'], None)
351         self.assertEqual(gasthausbox['Telefon'], None)
352         self.assertEqual(gasthausbox['Bild'], None)
353         self.assertEqual(gasthausbox['Rodelbahnen'], None)
354
355
356 class TestLonlatEle(unittest.TestCase):
357     def test_lonlat_ele_from_template(self):
358         template = mwparserfromhell.parse('{{Position oben|46.942239 N 11.468819 E|1866}}').filter_templates()[0]
359         lonlat, ele = lonlat_ele_from_template(template)
360         self.assertEqual(LonLat(11.468819, 46.942239), lonlat)
361         self.assertEqual(1866, ele)
362
363     def test_latlon_ele_to_template(self):
364         template = latlon_ele_to_template((LonLat(11.468819, 46.942239), 1866), 'Position oben')
365         self.assertEqual('{{Position oben|46.942239 N 11.468819 E|1866}}', template)
366
367
368 class TestWrMap(unittest.TestCase):
369     def test_parse_wrmap(self):
370         wikitext = '''
371         <wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">
372         <gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 11.190454</gasthaus>
373         <parkplatz>47.245789 11.238971</parkplatz>
374         <haltestelle name="Oberperfuss Rangger Köpfl Lift">47.245711 11.238283</haltestelle>
375         <rodelbahn>
376             47.238587 11.203360
377             47.244951 11.230868
378             47.245470 11.237853
379         </rodelbahn>
380         </wrmap>
381         '''
382         json = wrpylib.wrmwmarkup.parse_wrmap(wikitext)
383         self.assertEqual(json['properties']['lon'], 11.21408895)
384         self.assertEqual(json['properties']['lat'], 47.2417134)
385         self.assertEqual(json['properties']['zoom'], 14)
386         self.assertEqual(json['properties']['width'], 700)
387         self.assertEqual(json['properties']['height'], 400)
388         self.assertEqual(json['features'][0]['properties']['type'], 'gasthaus')
389         self.assertEqual(json['features'][0]['properties']['name'], 'Rosskogelhütte')
390         self.assertEqual(json['features'][0]['properties']['wiki'], 'Rosskogelhütte')
391         self.assertEqual(json['features'][0]['geometry']['coordinates'], [11.190454, 47.240689])
392         self.assertEqual(json['features'][1]['properties']['type'], 'parkplatz')
393         self.assertEqual(json['features'][1]['geometry']['coordinates'], [11.238971, 47.245789])
394         self.assertEqual(json['features'][2]['properties']['type'], 'haltestelle')
395         self.assertEqual(json['features'][2]['properties']['name'], 'Oberperfuss Rangger Köpfl Lift')
396         self.assertEqual(json['features'][2]['geometry']['coordinates'], [11.238283, 47.245711])
397         self.assertEqual(json['features'][3]['properties']['type'], 'rodelbahn')
398         self.assertEqual(json['features'][3]['geometry']['coordinates'], [
399             [11.203360, 47.238587],
400             [11.230868, 47.244951],
401             [11.237853, 47.245470]])
402
403     def test_create_wrmap(self):
404         geojson = {
405             'type': 'FeatureCollection',
406             'features':
407                 [{
408                     'type': 'Feature',
409                     'geometry': {
410                         'type': 'Point',
411                         'coordinates': [11.190454, 47.240689]},
412                     'properties': {'type': 'gasthaus', 'name': 'Rosskogelhütte', 'wiki': 'Rosskogelhütte'}
413                 }, {
414                     'type': 'Feature',
415                     'geometry': {
416                         'type': 'Point',
417                         'coordinates': [11.238971, 47.245789]},
418                     'properties': {'type': 'parkplatz'}
419                 }, {
420                     'type': 'Feature',
421                     'geometry': {
422                         'type': 'Point',
423                         'coordinates': [11.238283, 47.245711]},
424                     'properties': {'type': 'haltestelle', 'name': 'Oberperfuss Rangger Köpfl Lift'}
425                 }, {
426                     'type': 'Feature',
427                     'geometry': {
428                         'type': 'LineString',
429                         'coordinates': [
430                             [11.203360, 47.238587],
431                             [11.230868, 47.244951],
432                             [11.237853, 47.245470]]},
433                     'properties': {'type': 'rodelbahn'}
434                 }],
435             'properties': {
436                 'lon': 11.21408895,
437                 'lat': 47.2417134,
438                 'zoom': 14,
439                 'width': 700,
440                 'height': 400}
441         }
442
443         wikitext = wrpylib.wrmwmarkup.create_wrmap(geojson)
444         self.assertEqual(wikitext, textwrap.dedent('''\
445         <wrmap height="400" lat="47.241713" lon="11.214089" width="700" zoom="14">
446
447         <gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 N 11.190454 E</gasthaus>
448         <parkplatz>47.245789 N 11.238971 E</parkplatz>
449         <haltestelle name="Oberperfuss Rangger Köpfl Lift">47.245711 N 11.238283 E</haltestelle>
450
451         <rodelbahn>
452         47.238587 N 11.203360 E
453         47.244951 N 11.230868 E
454         47.245470 N 11.237853 E
455         </rodelbahn>
456
457         </wrmap>'''))