Public
Edited
Jun 4
Paused
Insert cell
Insert cell
Insert cell
Insert cell
events_sorted.map((d) => d.color)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
height = Array.from(d3.union(warnungen_table.map((d) => d.level))).length > 2
? 1200
: Array.from(d3.union(warnungen_table.map((d) => d.level))).length == 2
? 800
: Array.from(d3.union(warnungen_table.map((d) => d.level))).length == 2
? 400
: 400
Insert cell
// Wetterwarnungen und Vorabinformationen auf Gemeindeebene:
// https://maps.dwd.de/geoserver/web/wicket/bookmarkable/org.geoserver.web.demo.MapPreviewPage?1&filter=false
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
url = "https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=dwd%3AWarnungen_Gemeinden&maxFeatures=99999&outputFormat=application%2Fjson"
Insert cell
warnungen_data = rewind(await d3.json(url))
Insert cell
warnungen = geo.map(warnungen_data, (d, i) => ({
event: titleCase(d.EVENT.toLowerCase()),
name: d.NAME,
description: d.DESCRIPTION,
instruction: d.INSTRUCTION,
start: d.ONSET,
end: d.EXPIRES,
stamp: d.SENT
}))
Insert cell
warnungen_filtered = geo.filter(
warnungen,
(d) => d.name != "gemeindefreies Gebiet Burgjoß"
)
Insert cell
warnungen_level = geo.properties.add({
x: warnungen_filtered,
field: "level",
expression:
"event.replace('Vorabinformation Schweres Gewitter', 'Regen und Nebel').replace('Ergiebiger Dauerregen', 'Regen und Nebel').replace('Dauerregen', 'Regen und Nebel').replace('Starkregen', 'Niederschlag').replace('Schweres Gewitter Mit Heftigem Niederschlag Und Hagel', 'Regen und Nebel').replace('Starkes Gewitter', 'Regen und Nebel').replace('Gewitter', 'Regen und Nebel').replace('Nebel', 'Regen und Nebel').replace('Orkanartige Böen', 'Wind und Sturm').replace('Schwere Sturmböen', 'Wind und Sturm').replace('Sturmböen', 'Wind und Sturm').replace('Extreme Orkanböen', 'Wind und Sturm').replace('Orkanböen', 'Wind und Sturm').replace('Schwere Sturmböen', 'Wind und Sturm').replace('Windböen', 'Wind und Sturm').replace('Strenger Frost', 'Schnee und Kälte').replace('Frost', 'Schnee und Kälte').replace('Starker Schneefall', 'Schnee und Kälte').replace('Leichter Schneefall', 'Schnee und Kälte').replace('Schneefall', 'Schnee und Kälte').replace('Markante Glätte', 'Schnee und Kälte').replace('Glätte', 'Schnee und Kälte').replace('Schneeverwehung', 'Schnee und Kälte').replace('Vorabinformation Glatteis', 'Schnee und Kälte').replace('Regen und Regen und Nebel', 'Regen und Nebel')"
})
Insert cell
warnungen_table = geo.properties.table(warnungen_level)
Insert cell
warnungen_table
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
events = Array.from(
new Set(
Array.from(
warnungen_table.reverse().map((d) => titleCase(d.event.toLowerCase()))
)
)
)
Insert cell
levels = [
{ event: "Windböen", color: "#F0C1B2" },
{ event: "Sturmböen", color: "#E84F1C" },
{ event: "Schwere Sturmböen", color: "#C9212C" },
{ event: "Orkanartige Böen", color: "#780000" },
{ event: "Nebel", color: "#99AFC2" },
{ event: "Gewitter", color: "#BC2A93" },
{ event: "Starkes Gewitter", color: "#7d1c61" },
{ event: "Dauerregen", color: "#B3C8FF" },
{ event: "Ergiebiger Dauerregen", color: "#80A3FF" },
{ event: "Starkregen", color: "#4F80FF" },
{ event: "Leichter Schneefall", color: "#f2f2f2" },
{ event: "Schneefall", color: "#f2f2f2" },
{ event: "Frost", color: "#f2f2f2" },
{ event: "Glätte", color: "#f2f2f2" },
{ event: "Vorabinformation Glatteis", color: "#f2f2f2" }
]
Insert cell
events_sorted = levels.filter((d) => events.includes(d.event))
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more