Logo / Wappen
[Platzhalter]
Hinweis – Prototyp in Entwicklung: Dieses Dokument ist ein High-Fidelity-Mockup und befindet sich noch in der Entwicklung. Einige Inhalte sind bewusst als Platzhalter (Lorem ipsum) gesetzt. Die Code-Chunks der einzelnen Abschnitte können über den Button „Code” oben rechts eingeblendet werden. Parameter wie Flächengröße bei der Symbolisierung der Karte oder Eigentumsstruktur bei dem Balkendiagramm können nach Bedarf beliebig für andere Parameter ausgetauscht werden. Die hier verwendeten Angaben sind als Vorschläge zu verstehen.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Dieses Mockup visualisiert die Kleingartenanlagen (KGA) im Berliner Ortsteil Westend (Bezirk Charlottenburg-Wilmersdorf). Die Daten stammen aus den WFS-Diensten des Geoportals Berlin (GDI-Berlin) und werden direkt über eine OGC-Schnittstelle abgerufen.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Die Geodaten werden direkt von den WFS-Diensten der GDI Berlin bezogen. Für
den Ortsteil Westend im Bezirk Charlottenburg-Wilmersdorf wird der
Dienst alkis_ortsteile verwendet, da Westend kein
eigenständiger Berliner Bezirk ist.
# WFS-URLs
wfs_ortsteile <- "https://gdi.berlin.de/services/wfs/alkis_ortsteile"
wfs_kga <- "https://gdi.berlin.de/services/wfs/kleingarten"
# Ortsteile abrufen
url_ot <- parse_url(wfs_ortsteile)
url_ot$query <- list(
service = "wfs",
version = "2.0.0",
request = "GetFeature",
typenames = "alkis_ortsteile:ortsteile",
outputFormat = "GML2"
)
ber_OT <- read_sf(build_url(url_ot))
ber_OT <- st_set_crs(ber_OT, 25833)
# Westend isolieren
Westend <- ber_OT |>
select(nam, geom) |>
subset(nam == "Westend")
# Kleingärten abrufen
url_kga <- parse_url(wfs_kga)
url_kga$query <- list(
service = "wfs",
version = "2.0.0",
request = "GetFeature",
typenames = "kleingarten:kleingarten",
outputFormat = "GML2"
)
be_KGA <- read_sf(build_url(url_kga))
be_KGA <- st_set_crs(be_KGA, 25833)
be_KGA$zwischenpaechter <- as.factor(be_KGA$zwischenpaechter)
be_KGA[, c("gml_id", "ogr_fid", "anlagennummer")] <- NULL
# Verschneidung: Kleingärten innerhalb Westend
KGA <- st_intersection(be_KGA, Westend)
KGA[, "nam"] <- NULL
# Randanlagen mit fremdem Zwischenpächter ausschließen
KGA_Grenze <- be_KGA |>
subset(st_overlaps(be_KGA, Westend, sparse = FALSE))
KGA_Aus <- KGA_Grenze[
!KGA_Grenze$zwischenpaechter %in% c("BV Charlottenburg", "BLW"),
]
KGA_WE <- setdiff(KGA, KGA_Aus)
# Spaltennamen anpassen
colnames(KGA_WE) <- c("Name", "Straße", "Größe", "Parzellenanzahl",
"Eigentum", "Zwischenpächter", "geom")
# Eigentum codieren
KGA_WE$Eigentum[KGA_WE$Eigentum == 1] <- "Land"
KGA_WE$Eigentum[KGA_WE$Eigentum == 0] <- "Bezirk"
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Die
Verschneidung erfolgt mit st_intersection(), um auch
randlich überlappende Anlagen flächengenau zuzuschneiden. Anlagen, deren
Zwischenpächter nicht dem Bezirksverband Charlottenburg oder der
Bahn-Landwirtschaft (BLW) zuzuordnen sind, werden als Randfälle
ausgeschlossen.
tmap_mode("view")
# Zusatzspalten für Darstellung
KGA_WE$Groesse_ha <- round(as.numeric(KGA_WE$Größe) / 10000, 2)
KGA_WE$Groessenklasse <- cut(
as.numeric(KGA_WE$Größe),
breaks = c(0, 10000, 50000, 100000, Inf),
labels = c("< 1 ha", "1–5 ha", "5–10 ha", "> 10 ha"),
include.lowest = TRUE
)
KGA_WE$Parzellenanzahl[is.na(KGA_WE$Parzellenanzahl)] <- "keine Angabe"
KGA_WE$Zwischenpächter[is.na(KGA_WE$Zwischenpächter)] <- "keine Angabe"
KGA_WE$Eigentum[is.na(KGA_WE$Eigentum)] <- "keine Angabe"
tm_shape(KGA_WE) +
tm_polygons(
fill = "Groessenklasse",
fill.scale = tm_scale_categorical(
values = c("< 1 ha" = "#b8e4b8",
"1–5 ha" = "#5dab5d",
"5–10 ha" = "#2d7a2d",
"> 10 ha" = "#1a4d1a")
),
fill.legend = tm_legend(title = "Flächengröße"),
fill_alpha = 0.75,
col = "#2d7a2d",
lwd = 1.2,
hover = "Name",
popup.vars = c(
"Name" = "Name",
"Straße" = "Straße",
"Flächengröße (m²)" = "Größe",
"Flächengröße (ha)" = "Groesse_ha",
"Größenklasse" = "Groessenklasse",
"Parzellenanzahl" = "Parzellenanzahl",
"Zwischenpächter" = "Zwischenpächter",
"Eigentum" = "Eigentum"
)
) +
tm_shape(Westend) +
tm_lines(
col = "#004282",
lwd = 2.5
) +
tm_options(
basemap.server = c(
"Esri.WorldTopoMap",
"OpenStreetMap.DE",
"Esri.WorldImagery"
),
basemaps.alpha = c(1, 1, 1)
) +
tm_title_in(
"Kleingartenanlagen in Berlin-Westend",
size = 1.2,
color = "#004282",
fontface = "bold",
bg = TRUE,
bg.color = "white",
bg.alpha = 0.8,
padding = 0.45,
position = tm_pos_in("left", "top")
) +
tm_scalebar(position = tm_pos_in("right", "bottom")) +
tm_credits(
"© 2026 Paul Stolpmann | Daten: Geoportal Berlin, WFS Kleingarten & ALKIS Bezirke",
size = 0.7,
position = tm_pos_in("left", "bottom")
)
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Das folgende Diagramm zeigt die Verteilung der Kleingartengesamtfläche nach Eigentumsstruktur (Land Berlin vs. Bezirk) auf Basis der amtlichen WFS-Sachdaten.
eigentum_df <- KGA_WE |>
as.data.frame() |>
filter(Eigentum != "keine Angabe") |>
group_by(Eigentum) |>
summarise(
Flaeche_ha = sum(as.numeric(Größe), na.rm = TRUE) / 10000,
Anlagen = n(),
.groups = "drop"
)
ggplot(eigentum_df, aes(x = Eigentum, y = Flaeche_ha, fill = Eigentum)) +
geom_bar(stat = "identity", width = 0.5,
color = "#333333", linewidth = 0.3, show.legend = FALSE) +
geom_text(
aes(label = paste0(round(Flaeche_ha, 1), " ha\n(", Anlagen, " KGA)")),
vjust = -0.35, size = 3.2, fontface = "bold", lineheight = 0.9
) +
scale_fill_manual(values = c("Land" = "#2d7a2d", "Bezirk" = "#5dab5d")) +
scale_y_continuous(expand = expansion(mult = c(0, 0.22))) +
labs(
x = NULL,
y = "Fläche (ha)",
title = "Kleingartenfläche nach Eigentumsstruktur"
) +
theme_classic(base_size = 11) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = "#333333"),
axis.text = element_text(color = "#444444"),
axis.line = element_line(color = "#cccccc")
)
## Top-5 größte Anlagen
KGA_WE |>
st_drop_geometry() |>
arrange(desc(as.numeric(Größe))) |>
select(Name, Straße, Größe, Groesse_ha, Parzellenanzahl) |>
head(5) |>
knitr::kable(
col.names = c("Name", "Straße", "Fläche (m²)", "Fläche (ha)", "Parzellen")
)
| Name | Straße | Fläche (m²) | Fläche (ha) | Parzellen |
|---|---|---|---|---|
| Bismarcksruh - KGA | Spandauer Damm | 68405 | 6.84 | 151 |
| Westend - KGA | Spandauer Damm | 58897 | 5.89 | 144 |
| Spreeblick - KGA | Wiesendamm | 55454 | 5.55 | 131 |
| Wochenend I und II - KGA | Spandauer Damm | 50295 | 5.03 | 146 |
| Golfplatz - KGA | Spandauer Damm | 43973 | 4.40 | 90 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Die nachfolgende Tabelle gibt einen Überblick über alle im Ortsteil Westend verorteten Kleingartenanlagen mit den wichtigsten Sachdaten.
DT::datatable(
KGA_WE |>
st_drop_geometry() |>
select(Name, Straße, Größe, Groesse_ha, Parzellenanzahl,
Groessenklasse, Eigentum, `Zwischenpächter`),
filter = "top",
options = list(
pageLength = 8,
autoWidth = TRUE,
language = list(url = "//cdn.datatables.net/plug-ins/1.10.11/i18n/German.json")
)
)
| Name | Paul Stolpmann |
| Matrikelnummer | 110129 |
| Datum | 2026-06-04 |
| Modul | Interaktive Geomediengestaltung |
| Aufgabe | High-Fidelity-Mockup Kleingartenanlagen |
| Ortsteil | Berlin-Westend (Charlottenburg-Wilmersdorf) |
| Datenquelle | GDI Berlin – WFS alkis_ortsteile, kleingarten |
| Koordinatensystem | EPSG:25833 (UTM 33N) |
Umsetzung in R mit sf, tidyverse, tmap, DT und httr. Vielen Dank an das R Core Team und den Entwicklern der Pakete und Hintergrunddaten, die dies ermöglicht haben.