library(tidyverse, warn.conflicts = FALSE)
library(here)
library(janitor)
library(kableExtra)
library(knitr)
library(naniar)
library(RSQLite)
library(sf)
library(statR)1 Einleitung
Diese Arbeit hat zum Ziel, die Datenqualität in der Objektdatenbank ODB der Denkmalpflege des Kantons Zürich unter Zuhilfenahme der öffentlich zugänglichen Daten des Gebäude- und Wohnungsregisters GWR zu analysieren und über den Vergleich gezielte Verbesserungen daraus abzuleiten.
2 Daten
Die folgenden Daten werden für dieses Projekt herangezogen:
Objektliste (OGD): Aus Gründen der Praktikabilität wird für das Projekt stellvertretend für den gesamten Inhalt der ODB das bereits seit 2012 als OGD verfügbare Inventar der Denkmalschutzobjekte von überkommunaler Bedeutung, folgend als Objektliste bezeichnet, als Datengrundlage verwendet. Die Objektliste enthält eine Auswahl von Objekten (vgl. PBG § 203) auf der Basis des grossen Bestands von Objektdokumentationen, deren systematische Erarbeitung bereits 1962 ihren Anfang nahm, vgl. Müller, Thomas,1 S. 5. Mehr Informationen zur Erhebung dieser Daten sind unter https://zh.ch/denkmalinventar abrufbar.
Gebäude- und Wohnungsregister GWR (OGD): Um die erforderlichen relationalen gebäudebezogenen GWR-Daten für die Abfragen zur Verfügung zu haben, befindet sich in
scripts/download_gwr_as_sqlite.Rein Skript, welches die vortagesaktuelle Fassung der öffentlich zugänglichen SQLight-Datenbank herunterlädt und am richtigen Ort unterdata/raw/ablegt.Gebäude-Polygone der amtlichen Vermessung AV (OGD): Das AVZH-Datenprodukt «AV MOpublic, Bodenbedeckung (OGD)», welches unter https://geodatenshop.zh.ch/ verfügbar ist (allerdings erst ab Februar 2026 als einzelne Datei für den ganzen Kanton), enthält neben vielen anderen Informationen Polygone zu allen Gebäuden im Kanton, die auch den Eidgenössischen Gebäudeidentifikator EGID des Gebäude- und Wohnungsregisters (vgl. oben) in einem Attribut enthalten.
Amtliches Ortschaftenverzeichnis (OGD): Das amtliche Ortschaftenverzeichnis enthält die Namen, Perimeter und Postleitzahlen aller Ortschaften der Schweiz und des Fürstentums Liechtenstein.
- Um die Übereinstimmung von Postleitzahlen und Ortsnamen sowie die Schreibung von Ortsnamen validieren zu können, wird die einfachste Darreichungsform als CSV-Datei genutzt.
- Um fehlende Postleitzahlen und Orte anhand der Koordinatenpaare in der Objektliste ergänzen zu können, wird die Shapefile-Variante verwendet.
Gemeindezuweisungen zu Bezirk und Raumplanungsregion Kanton Zürich (OGD, CC-Zero): Die Gemeindezuweisungen sind Teil des Datensatzes Gebietsstammdaten Kanton Zürich. Die CSV-Datei enthält die Zuweisungen der Gemeinden zu deren Bezirk und Raumplanungsregion.
2.1 Analyseziele
Die Analyse fokussiert auf die folgenden Fragestellungen und Attribute der Objektliste. Über die Daten der Objektliste hinaus, sollen die erarbeiteten Skripte auch auf den gesamten Bestand an Objektdaten in der ODB anwendbar sein.
Die Daten der Denkmalpflege gehen bis auf die frühen 1960er-Jahre zurück, vgl. Waddell, Oliver,2 S. 6f. Als identifizierende Merkmale wurden in erster Linie die Adressen der Objekte und deren Gebäudeversicherungsnummern verwendet. Diese Attribute sind allerdings nicht stabil und nur sehr suboptimale Identifkatoren:
- Die Gebäudeversicherungsnummern wurden lange wiederverwendet, wenn ein Objekt abgegangen war. Heute werden untergehende Nummern nicht wiederverwendet, trotzdem ändert sich bis heute der Umfang eines Objekts der Gebäudeversicherung machmal aufgrund von rein administrativen Vorgängen, vgl. GVZ Gebäudeversicherung Kanton Zürich; Fierz, Bernard; Caduff, Christian u. a. (Hg.)3 S. 6.
- Die flächendeckende Vergabe von Gebäudeadressen im Kanton Zürich erfolgte erst spät. Heute hat jede kleine Hütte in den Fallätschen eine eigene Adresse, aber in dünn besiedelten Gebieten wurde die Gebäudeadressierung erst 2007 vervollständigt, vgl. Diverse.4
Im Vordergrund für die robuste Identifizierung von Gebäuden steht deshalb der eidgenössische Gebäudeidentifikator (EGID), welcher vom Bundesamt für Statistik BFS für das Gebäude- und Wohnungsregister GWR vergeben wird. Das GWR wurde anhand von Daten der Volkszählung 2000 zu statistischen Zwecken erstellt und fusst auf einer robusten Gebäudedefinition, vgl. Sektion Gebäude und Wohnungen (BFS); Geodäsie und Eidgenössische Vermessungsdirektion (swisstopo) (Hg.)5 S. 4. Es hat sich heute als massgebendes nationales Informationssystem für Gebäude etabliert.
Folgende Prüfungen stehen im Rahmen dieses Projekts im Vordergrund:
- Attribut EGID
-
Ergänzung fehlender EGIDs anhand Strassenadressen. Herausforderung: Während die Strassenadressen vergleichsweise zuverlässig gepflegt sind, sind Postleitzahlen und Ortsnamen, welche die Strassenadresse für die Identifizierung eines Objekt erst eindeutig und damit aussagekräftig machen, nur teilweise erfasst.
-
Ergänzung fehlender EGIDs anhand der Koordinaten aus den Bodenbedeckungs-Daten der amtlichen Vermessung. Herausforderung: Gewisse Objekte wie Wasserbauten oder Umgebungen haben Koordinaten gesetzt, die ungefähr in der Mitte der Ausdehnung des Objekts gesetzt werden. Diese können in Ausnahmefällen auf einem Gebäude liegen, das aber nicht das ganze Objekt repräsentiert.
- Strassenadressen
-
Vervollständigung von unvollständigen Adressen auf Basis der Koordinaten der Objekte
-
Ergänzung fehlender Strassenadressen anhand der EGIDs
2.2 Daten Aufbereitung
2.2.1 Daten einlesen
Objektliste Denkmalpflege
einstufung_levels <- c("regional", "kantonal")
na_strings <- c("–", "-")
objektliste_denkmalpflege <- read_delim(
here::here("data", "raw", "2025-11-09-objektliste_mit_PDF-Links.csv"),
delim = ";",
escape_double = FALSE,
col_types = cols(
PLZ = col_character(),
),
locale = locale(
date_names = "de",
tz = "Europe/Zurich",
encoding = "WINDOWS-1252"
),
trim_ws = TRUE
) |>
replace_with_na_all(condition = ~ .x %in% na_strings) |>
clean_names() |>
mutate(
datum_erlass = convert_to_date(
datum_erlass, # handle the mixed-format dates
character_fun = lubridate::dmy
),
grundbucheintrag = convert_to_date(
grundbucheintrag, # handle the mixed-format dates
character_fun = lubridate::dmy
),
einstufung = fct(einstufung, levels = einstufung_levels),
odb_id_val = as.numeric(str_remove_all(odb_id, "\\D+")),
) |>
group_by(odb_id) |>
summarise(
gemeinde = paste(unique(gemeinde), collapse = ";"),
across(.cols = -c(gemeinde), first),
.groups = "drop"
) |>
arrange(odb_id_val) |>
select(-odb_id_val)GWR-Daten
Bei Objekten mit mehreren Postleitzahlen werden diese aufgrund der einfachen Umwandlung in Integer-Werte verworfen. Bei einer weiteren Ausarbeitung des Skripts müsste hier eine bessere Lösung gefunden werden (und müsste in der Folge auch der Join für Tabelle 1 angepasst werden).
conn <- dbConnect(RSQLite::SQLite(), here::here("data", "raw", "gwr-data.sqlite"))
gwr_by_egid <- dbGetQuery(
conn,
"
SELECT
b.EGID as egid,
b.EGRID as egrid,
b.GGDENR as gemeindenummer,
b.GGDENAME as gemeindename,
b.LPARZ as parzelle,
b.GEBNR as gebaeudenummer,
b.GBEZ as gebaeudename,
b.GKODE as e_gebaeudekoordinate,
b.GKODN as n_gebaeudekoordinate,
(
SELECT c.CODTXTLD
FROM codes c
WHERE c.CMERKM = 'GKAT'
AND c.CECODID = b.GKAT
LIMIT 1
) as gebaeudestatus,
GROUP_CONCAT(e.STRNAME || ' ' || e.DEINR, '; ') as strassenadresse,
REPLACE(GROUP_CONCAT(DISTINCT e.DPLZ4), ',', ';') as postleitzahl,
REPLACE(GROUP_CONCAT(DISTINCT e.DPLZNAME), ',', ';') as ortsname,
b.GBAUJ as baujahr,
b.GBAUM as baumonat,
b.GABBJ as abbruchjahr,
b.GEXPDAT as exportdatum,
count(1) as anzahl_adressen
from
building b
inner join entrance e on e.egid = b.egid
GROUP BY
b.EGID,
b.GGDENR,
b.GGDENAME
ORDER BY
gemeindenummer ASC
"
) |>
mutate(
across(everything(), ~ ifelse(. == "", NA, as.character(.)))
) |>
clean_names() |>
mutate(
exportdatum = convert_to_date(
exportdatum, # handle the mixed-format dates
character_fun = lubridate::ymd
),
gemeindenummer = as.integer(gemeindenummer),
baujahr = as.integer(baujahr),
e_gebaeudekoordinate = as.numeric(e_gebaeudekoordinate),
n_gebaeudekoordinate = as.numeric(n_gebaeudekoordinate),
egid = as.integer(egid),
postleitzahl = as.integer(postleitzahl)
)
# close SQlite DB
dbDisconnect(conn)2.2.2 Daten anreichern und auswerten
Fehlende EGID-Werte in den ODB-Daten anhand Adresse identifizieren
Als erster Ansatz soll Anhand der Kombination von Gemeinde und Strassenadresse überprüft werden, welche Objekte in der Objektliste keine EGIDs, falsche EGIDs oder nur einen Teil der tatsächlichen EGIDs eingetragen haben. Aufgelistet werden nur EGIDs, die in der Objektliste noch gar nicht vorhanden sind. Beziehen sich mehrere Objekte in der Objektliste auf Teile derselben EGID, werden sie von der folgenden Abfrage nicht gefunden. Die ermittelten EGID-Werte werden für die einfachere Kontrolle mit direktem Link zum Eintrag des Objekts in der ODB ausgegeben.
Aufgrund der kleinen Anzahl Objekt in der Objektliste der Denkmalpflege ist vorgängig kein kompliziertes Herausfiltern von Objekten ohne EGID notwendig, es wird bloss anhand von Begriffen im Objekttitel gefiltert. Aus den vollständigen ODB-Daten müssten vor dem Lookup jene Objekte herausgefiltert werden, für welche aufgrund ihres Typs keine EGID erwartet wird und welche abgebrochen sind.
Die ermittelten EGID-Werte können nicht ohne vorgängige genaue Prüfung in die ODB übernommen werden: EGIDs können absichtlich weggelassen worden sein (z. B. bei Stadtmauerresten) oder Koordinaten können fehlerhaft gesetzt worden sein.
zip4_polys <- st_read(here::here("data", "raw", "AMTOVZ_ZIP.shp"), quiet = TRUE) |>
st_transform(crs = 2056)
# Verify that the attribute really exists
if (!"ZIP4" %in% names(zip4_polys)) {
stop("The polygon layer does not contain a 'ZIP4' column.")
}
# Create a lookup table for ZIP4 via the coordinates in the ODB data
objektliste_denkmalpflege_with_looked_up_zip_code <- objektliste_denkmalpflege |>
filter(
!is.na(e_koordinate) & !is.na(n_koordinate)
) |>
st_as_sf(
coords = c("e_koordinate", "n_koordinate"),
crs = 2056,
remove = FALSE
) |>
st_join(
zip4_polys |>
select(ZIP4, ADDITIONAL),
join = st_within,
left = TRUE
) |>
st_drop_geometry()
objektliste_denkmalpflege_mit_korrekten_ortsnamen <- objektliste_denkmalpflege_with_looked_up_zip_code |>
mutate(
ZIP4 = as.integer(ZIP4),
ADDITIONAL =as.integer(ADDITIONAL)
) |>
left_join(
read_csv2(here::here("data", "raw", "AMTOVZ_CSV_LV95.csv")) |>
filter(Sprache == "de") |>
select(Ortschaftsname, PLZ, Zusatzziffer) |>
mutate(
PLZ = as.integer(PLZ),
Zusatzziffer =as.integer(Zusatzziffer)
),
by = join_by(ZIP4 == PLZ, ADDITIONAL == Zusatzziffer),
multiple = "first"
)Strassenadressen sind innerhalb von Gemeinden nicht eindeutig, nur innerhalb von postalischen Ortschaften/Postleitzahl-Gebieten. Ohne Postleitzahl kommt es deshalb zu fehlerhaften Zuweisungen. Z. B. gibt es in der Gemeinde Russikon die Dorfstrasse 10 drei mal in verschiedenen Ortschaften (Russikon, Rumlikon und Gündisau).
# left join EGIDs from GWR via strasse_nr, ZIP4 and gemeinde
objektliste_left_join_via_egid <- objektliste_denkmalpflege_mit_korrekten_ortsnamen |>
# select(odb_id, gemeinde, strasse_nr, egid) |>
separate_rows(strasse_nr, sep = "; ") |>
mutate(
strasse_nr = str_trim(strasse_nr)
) |>
filter(
!is.na(strasse_nr) & # remove NAs
strasse_nr != "" & # remove empty strings
!str_detect(strasse_nr, regex(" bei", ignore_case = FALSE)) # remove approximative addresses
) |>
left_join(
gwr_by_egid |>
select(egid, gemeindename, postleitzahl, strassenadresse) |>
filter(
!is.na(strassenadresse) & strassenadresse != ""
) |>
separate_rows(strassenadresse, sep = "; ") |>
mutate(
strassenadresse = str_trim(strassenadresse)
),
by = join_by(
"strasse_nr" == "strassenadresse",
"gemeinde" == "gemeindename",
"ZIP4" == "postleitzahl"
),
multiple = "all",
relationship = "many-to-many"
) |>
separate_rows(egid.x, sep = "; ") |>
mutate(egid.x = as.integer(egid.x))
egids_missing_in_odb_identified_via_address <- objektliste_left_join_via_egid |>
# check if egid.y (int) is present anywhere in egid.x (int)
filter(
!is.na(egid.y)
) |>
filter(
# filter to remove objects where no EGID is expected
!str_detect(
tolower(objekt),
regex(
params$no_egid_expected_regex,
ignore_case = TRUE
)
)
) |>
# lookup egid.y in all values for egid.x of the full objektliste_left_join_via_egid
# set new column "egid_present_in_odb" to TRUE if found, FALSE otherwise
rowwise() |>
mutate(
egid_present_in_odb = egid.y %in% objektliste_left_join_via_egid$egid.x
) |>
ungroup() |>
filter(
egid_present_in_odb == FALSE
) |>
select(-egid.x, -egid_present_in_odb) |>
distinct()Ausgeblendete lange Tabelle (bitte Klicken für Anzeige)
missing_egid_values_via_address <- egids_missing_in_odb_identified_via_address |>
group_by(odb_id, objekt) |>
summarise(
egid.y = paste(unique(egid.y), collapse = ", "),
.groups = "drop"
) |>
arrange(as.numeric(str_remove_all(odb_id, "\\D+")))
kable(
missing_egid_values_via_address,
escape = FALSE,
col.names = c("ODB-ID", "Objektname", "EGID")
) |>
column_spec(
1,
link = paste0(
"https://odb.zh.ch/odbwiki/mediawiki/index.php/",
missing_egid_values_via_address$odb_id
)
)| ODB-ID | Objektname | EGID |
|---|---|---|
| Objekt 13 | Sekundarschulhaus (Trakt A) | 210041672 |
| Objekt 25 | Kirchenzentrum | 210087577 |
| Objekt 77 | Ehem. Zehntenscheune | 210232450 |
| Objekt 88 | Ehem. Vielzweckbauernhaus | 210232453 |
| Objekt 98 | Transformatorenstation | 201032480 |
| Objekt 104 | Arbeiterwohnhaus der ehem. Spinnerei Bühler | 1157057, 1157048 |
| Objekt 111 | Trottspeicher im Hörnli | 210263104 |
| Objekt 184 | Schulhaus II | 116471 |
| Objekt 231 | Mehrfamilienhaus | 118817 |
| Objekt 234 | Ehem. Scheune mit Speicher | 210238408 |
| Objekt 235 | Vorkeller mit Kammer | 210238593 |
| Objekt 236 | Holzschopf | 210238574 |
| Objekt 242 | Reihenwohnhaus 1 | 19494 |
| Objekt 244 | Reihenwohnhaus 3 | 19512 |
| Objekt 246 | Schopf 2 | 210238439 |
| Objekt 258 | Klassentrakt | 191988281 |
| Objekt 384 | Ehem. Webereigebäude mit Anbauten | 210142709 |
| Objekt 386 | Ehem. Arbeiterwohnhaus | 112282, 112284 |
| Objekt 387 | Ehem. Arbeiterwohnhaus | 112286 |
| Objekt 403 | Wohnhaus | 113051 |
| Objekt 404 | Ökonomiegebäude | 210142988 |
| Objekt 484 | Hausteil 1 | 28107 |
| Objekt 486 | Scheune 1 | 210246169 |
| Objekt 487 | Scheune 2 | 210246165 |
| Objekt 494 | Zeughaus West, ehem. Zeughaus 1 BA und Abwartswohnung | 1161929 |
| Objekt 495 | Zeughaus Ost, ehem. Zeughaus 2 BB und 3 BC | 201032773 |
| Objekt 555 | Frei- und Hallenbad mit Sporttrakt | 210229865 |
| Objekt 601 | Neues Spinnereigebäude, ehem. Kraftzentrale und Flachdachanbau | 210144023, 201004230, 201004231, 9004537 |
| Objekt 614 | Ökonomiegebäude | 210252347 |
| Objekt 745 | Reihenhaus | 18821 |
| Objekt 798 | Dienstgebäude | 35158 |
| Objekt 800 | Angestelltenwohnhaus | 35143, 35145, 35147 |
| Objekt 801 | Angestelltenwohnhaus | 35144, 35124, 35146 |
| Objekt 802 | Angestelltenwohnhaus | 35123, 35162, 35163 |
| Objekt 803 | Angestelltenwohnhaus | 35164, 35125, 35126 |
| Objekt 804 | Angestelltenwohnhaus | 35127, 35128, 35167 |
| Objekt 805 | Angestelltenwohnhaus | 35129, 35130, 35168 |
| Objekt 806 | Bauernwohnhaus, sog. «Schellenberghaus» | 210296484 |
| Objekt 831 | Speicher | 210261016 |
| Objekt 832 | Schweinestall | 210261017 |
| Objekt 866 | Bahnhof Fischenthal | 41397 |
| Objekt 872 | Wohnhaus mit Ökonomieteil | 19219 |
| Objekt 946 | Teilstück des Belvoirparkzauns | 143825, 302061521 |
| Objekt 984 | Lift und Treppe | 210197078 |
| Objekt 1095 | Pulverhäuschen | 210298444 |
| Objekt 1302 | Infanteriewerk A04856 | 150369 |
| Objekt 1303 | Infanteriewerk A04857 | 150369 |
| Objekt 1304 | Infanteriewerk A04858 | 302005586 |
| Objekt 1436 | Kleinunterstand A05440 | 9392 |
| Objekt 1521 | Klassentrakte und Spezialraumtrakt | 210210950, 191994669 |
| Objekt 1682 | Verwaltungsgebäude | 2366393, 302048605 |
| Objekt 1985 | Kettenhaus | 1162714, 1162744, 1162745, 1162747, 1162748, 1162749 |
| Objekt 1986 | Kettenhaus mit Tiefgarage | 1162750, 1162751, 1162752, 1162753, 1162754 |
| Objekt 1989 | Kettenhaus | 1162717, 1162740, 1162741, 1162742, 1162737, 1162738, 1162733 |
| Objekt 1990 | Reihenhäuser | 3001486, 1162720, 1162721, 1162722, 1162725, 1162724, 1162726, 1162727, 1162723 |
| Objekt 1992 | Kettenhaus | 1162731, 1162732 |
| Objekt 2036 | Reihenhäuser | 1151910, 1151911, 1151912, 1151913, 1151914, 1151915, 1151916, 1151917, 1151918 |
| Objekt 2038 | Reihenhäuser | 1151971, 1151970, 1151969 |
| Objekt 2039 | Reihenhäuser | 1151967, 1151966, 1151965, 1151964, 1151963, 1151962, 1151961, 1151960, 1151959, 1151958 |
| Objekt 2040 | Reihenhäuser | 1151956, 1151955, 1151954, 1151953 |
| Objekt 2067 | Hausteil Süd | 210280862 |
| Objekt 2071 | ehem. Pfarrhaus/heute Wohnhaus | 210288294 |
| Objekt 2101 | Hausteil 1 | 210184527 |
| Objekt 2102 | Hausteil 2 | 210184527 |
| Objekt 2113 | Wohnhaus | 35112 |
| Objekt 2213 | Haus «Korb» | 12561 |
| Objekt 2215 | Haus «Rebe» | 210179945 |
| Objekt 2217 | Gebäude Nr. 106. Stallscheune Breitenweg | 210298789, 210298788, 210298790 |
| Objekt 2219 | Petertrotte | 210266232 |
| Objekt 2262 | Wohnhaus mit Büro | 210208081 |
| Objekt 2266 | Hausteil Nordost | 60255 |
| Objekt 2269 | Turnhalle von 1881 | 192052052 |
| Objekt 2270 | Primarschulhaus «Töss» | 59940 |
| Objekt 2287 | Waschhaus | 45591 |
| Objekt 2312 | Wirtshaus «Engel» Hausteil 2 | 210208179 |
| Objekt 2346 | Ehem. Speicher | 210253489 |
| Objekt 2375 | Ehem. Zehntenspeicher mit Trotte | 210237039 |
| Objekt 2378 | Speicher, sog. «Pulverturm» | 210237204 |
| Objekt 2410 | Ehem. Spinnereigebäude | 2282204 |
| Objekt 2459 | Schulpavillon A | 210239979 |
| Objekt 2468 | Bauernwohnhaus, sog. «Pfisterhaus» | 2291005 |
| Objekt 2501 | Ehem. Färberei und Wohnhaus | 210295468 |
| Objekt 2537 | Waschhaus | 210239453 |
| Objekt 2565 | Lagerhaus Pestalozzi & Co. | 210212548 |
| Objekt 2569 | Schloss | 210143132 |
| Objekt 2602 | Doppelscheune | 210227234 |
| Objekt 2617 | Ehem. Fabrikantenvilla | 210142537, 210142598 |
| Objekt 2632 | Ehem. Gerichtsherrenschloss | 3116953 |
| Objekt 2640 | Wohnhaus | 3136125 |
| Objekt 2641 | Trottgebäude | 210206005 |
| Objekt 2679 | Trotthaus | 210271417 |
| Objekt 2754 | Ref. Kirche | 210134652 |
| Objekt 2758 | Ehem. Waschhaus | 210202054 |
| Objekt 2764 | Ehem. Spinnerei | 210133452 |
| Objekt 2765 | Filtergebäude | 210258754 |
| Objekt 2853 | Altbauteil | 191991070 |
| Objekt 2860 | Villa «Grünenberg» | 210271943 |
| Objekt 2895 | Ökonomiegebäude | 210271809 |
| Objekt 2939 | Singsaal, Trakt C | 192004669 |
| Objekt 2940 | Turnhalle, Trakt D | 210268611 |
| Objekt 3006 | Schulhaus, Trakt A | 210268611 |
| Objekt 3053 | «Spycher» | 210253463 |
| Objekt 3062 | Waschhaus mit Schopf | 210253471 |
| Objekt 3072 | Schulbauten von 1991-1996 | 210292065, 210292066 |
| Objekt 3091 | Ehem. Primarschulhaus | 29174 |
| Objekt 3154 | Anbau | 210240098 |
| Objekt 3250 | Orangerie- und Ateliergebäude | 201033787 |
| Objekt 3290 | Hausteil 1 | 114967 |
| Objekt 3313 | Kasernentrakt, Reithalle I «Kleine Reithalle» und Reithalle II «Grosse Reithalle» | 201010182 |
| Objekt 3314 | Reismühle Hegi: Mühlegebäude mit Sägerei | 1155105 |
| Objekt 3479 | Bahnhofgebäude, Bahnhofhalle und Erweiterungsbauten | 302040593 |
| Objekt 3484 | Ref. Kirche «Zwinglikirche» und Kirchgemeindehaus mit Pfarrhaus | 302003542 |
| Objekt 3487 | Eingangsgebäude | 2370974 |
| Objekt 3494 | Gärtnerwohnhaus | 302047761 |
| Objekt 3497 | Leichenhaus und Abdankungshalle | 302022539, 302003499 |
| Objekt 3499 | Bezirksgebäude | 302048923, 302048924, 302049249, 149066 |
| Objekt 3506 | Bankgebäude «Leuenhof» | 302023167 |
| Objekt 3517 | Rotes Schloss | 143620, 143621, 2366789, 302030955, 143625, 143627, 143628, 143629, 143624 |
| Objekt 3529 | Gewächshaus | 302046701 |
| Objekt 3538 | Weisses Schloss | 302046921 |
| Objekt 3543 | Villa Rosau | 302047135 |
| Objekt 3544 | Ref. Kirche Bühl | 302020795 |
| Objekt 3564 | Bettenhaus Ost | 302007714 |
| Objekt 3569 | Nukleartrakt 3 | 302007697 |
| Objekt 3570 | Aufnahmetrakt | 302007700 |
| Objekt 3571 | Küchentrakt mit Personalrestaurant und Cafeterien | 302007704 |
| Objekt 3572 | Operationstrakt | 302007710 |
| Objekt 3591 | Wohnhaus «Zum Kiel» | 140589, 302040218 |
| Objekt 3604 | Kantonsschulgebäude | 302046890, 143551, 9011845, 143549, 302046892 |
| Objekt 3616 | Ehem. Schlachthallen mit Kühl- und Kesselhaus | 302005783 |
| Objekt 3640 | Geschäftshaus | 302000428 |
| Objekt 3643 | Geschäftshaus | 302040281 |
| Objekt 3644 | Geschäftshaus | 302040283 |
| Objekt 3649 | Pavillon Le Corbusier | 302010817 |
| Objekt 3654 | Grand Hotel «Dolder» | 302034250, 302034249, 302034248, 302031101, 302033221, 302034252, 302034251 |
| Objekt 3658 | Hauptgebäude | 302050470, 302050573, 302050578, 302024550, 302024551, 302024552, 302024553, 302024554, 302024555, 302024556, 302024558, 302024559, 302024560, 302024561, 302024562, 302024563, 302024564, 302024565 |
| Objekt 3665 | Zunfthaus «Zur Saffran» | 302023140 |
| Objekt 3674 | Wohn- und Geschäftshaus mit Erweiterungsbau | 302047038, 302063366, 143819, 302063368 |
| Objekt 3684 | Synagoge | 302040683 |
| Objekt 3687 | Haus «Zum Grossen Pelikan» | 9011855, 302023116 |
| Objekt 3689 | Palmenhaus | 302023120 |
| Objekt 3696 | Hauptgebäude | 302040863 |
| Objekt 3698 | Gebäude HG (Hauptgebäude) | 302040852 |
| Objekt 3707 | Fahrzeugwaschanlage | 302032734 |
| Objekt 3821 | Ehem. Zeughäuser 3 und 4 mit Waffensaal | 302004674 |
| Objekt 3823 | Kath. Kirche Maria Lourdes mit Pfarrhaus und Kirchgemeindezentrum | 172138, 302024016, 302024017 |
| Objekt 3825 | Rote Fabrik Trakt C | 302045330 |
| Objekt 3826 | Rote Fabrik Trakt B | 9011350 |
| Objekt 3832 | Ref. Kirche mit Pfarrhaus | 153573 |
| Objekt 3833 | Vorderhäuser | 155994, 156011, 9001885, 156010, 156009 |
| Objekt 3840 | Ökonomiegebäude und Wohnhaus | 302040262, 302023134 |
| Objekt 3843 | Zentralbibliothek, Stammhaus | 3169695 |
| Objekt 3849 | Villa Patumbah | 302023514 |
| Objekt 3852 | Institutsgebäude, ehem. Villa «Zum Sonnenbühl» | 302008404 |
| Objekt 3905 | Güterschuppen | 210225449 |
| Objekt 3913 | Aufnahmegebäude mit Kioskteil | 111958 |
| Objekt 4088 | Aufnahmegebäude | 302020463, 302047271 |
| Objekt 4105 | Aufnahmegebäude | 210295461 |
| Objekt 4133 | Bahnhofgebäude | 302012086, 9001324 |
| Objekt 4134 | Perrondach 2 | 302032369 |
| Objekt 4135 | Perrondach 3 | 302032370 |
| Objekt 4154 | Perrondach 1 | 302032127 |
| Objekt 4239 | Turnhalle II | 116471 |
| Objekt 4308 | Kirchgemeindehaus, sog. «Häfelfingerhaus» | 210222412 |
| Objekt 4309 | Ref. Kirche | 210190314 |
| Objekt 4387 | Schulhaus Trakt 1 | 210197024 |
| Objekt 4389 | Waschhäuschen | 210074287 |
| Objekt 4451 | Abwartswohnhaus mit Garage | 210284461 |
| Objekt 4457 | Unteres Kosthaus | 210292790, 210292791, 210292730, 210292792 |
| Objekt 4458 | Mittleres Kosthaus, Ersatzneubau | 91493, 210292733, 210292732, 91482, 91484 |
| Objekt 4460 | Ehem. Ökonomiegebäude mit Wohnhaus | 210185642, 210185643 |
| Objekt 4462 | Ehem. Färberei | 210268708 |
| Objekt 4463 | Zweite Zwirnerei | 2267197 |
| Objekt 4529 | Transformatorenstation | 210253755 |
| Objekt 4537 | Trafostation B 6 Turm | 210239291 |
| Objekt 4626 | Transformatorenstation | 210247084 |
| Objekt 4631 | Trafostation «Hombrechtikon-Dörfli» | 210221529 |
| Objekt 4652 | Transformatorenstation | 109843 |
| Objekt 4800 | Werkareal Obertöss, Kleinkraftwerk im Fabrikgebäude von 1899 und historischer Maschinenpark | 201031015 |
| Objekt 4811 | «Lochmühle» | 210231588 |
| Objekt 4939 | Ehem. Spinnerei | 210143177 |
| Objekt 4982 | WR Hinwil 79: Maschinenpark | 47943 |
| Objekt 5017 | Kirche, ref. | 210249748 |
| Objekt 5019 | Waschhaus und Holzschopf | 210249810 |
| Objekt 5024 | Waschhaus | 210226487 |
| Objekt 5071 | Landhaus | 68071 |
| Objekt 5094 | Hauptgebäude mit Scheune und Zwischenbau | 201005269 |
| Objekt 5102 | Hausteil 2 | 9921 |
| Objekt 5112 | Hallenbad B | 9020 |
| Objekt 5121 | Ref. Kirche | 210235818 |
| Objekt 5155 | Flachbau mit Shedhallen | 210297737, 210295935, 210297739, 2285714, 210215089, 210297770, 210297740 |
| Objekt 5156 | Hauptgebäude von 1862 | 210239057 |
| Objekt 5190 | Wohnhaus mit Schopf | 41248 |
| Objekt 5215 | Mehrzweckhalle mit Turnhalle C | 9020 |
| Objekt 5216 | Schulhaus A mit Turnhalle und Hallenbad | 9020 |
| Objekt 5228 | Pfarr- und Sigristenhaus | 117456 |
| Objekt 5230 | Fussgängersteg | 117746 |
| Objekt 5231 | Wohn- und Geschäftshaus | 117724 |
| Objekt 5236 | Vielzweckbauernhaus | 116760, 3116876 |
| Objekt 5320 | Speicher | 210234237 |
| Objekt 5324 | Wohnhaus, sog. «Fähnderihaus» | 2278166 |
| Objekt 5344 | Ehem. Zehntenscheune | 210255822 |
| Objekt 5355 | Wohnhaus «Mühlehof», ehem. Bäckerei | 2249794 |
| Objekt 5381 | Kesselhaus und Werkstattgebäude von 1915 | 210238922 |
| Objekt 5419 | Ehem. ref. Pfarrhaus | 9883 |
| Objekt 5443 | Pumpenhaus | 210293879 |
| Objekt 5545 | Ehem. Zehntenspeicher | 210297430 |
| Objekt 5604 | Hausteil 10 | 210217917 |
| Objekt 5612 | Hausteil 9 | 210121754 |
| Objekt 5641 | Bauernhaus, ehem. | 210112484 |
| Objekt 5697 | Schulhaus | 191909721 |
| Objekt 5710 | Singsaal und Abwartswohnung | 192087260 |
| Objekt 5711 | Turnhalle | 192087263 |
| Objekt 5785 | Gasreglerstation | 191900428, 210210834 |
| Objekt 5804 | Kettenhaus | 121248, 121246 |
| Objekt 5816 | Trotthaus | 210224768 |
| Objekt 5892 | Bauernhaus | 210239041 |
| Objekt 5895 | Turnhalle | 2264203 |
| Objekt 5926 | Kettenhaus | 121251 |
| Objekt 5976 | Angestelltenwohnhäuser | 120178, 120179 |
| Objekt 5984 | Klassentrakte A/B mit Pausenhalle | 210197191, 210197190, 200255419, 201024586 |
| Objekt 5993 | Speicher | 210244619 |
| Objekt 6003 | Ehem. Hühnerhaus | 210244613 |
| Objekt 6013 | Schopf | 210244705 |
| Objekt 6015 | Magazingebäude, Spedition und Portierhaus | 210220943 |
| Objekt 6022 | Magazin- und Fabrikgebäude | 210220953 |
| Objekt 6041 | Remise | 87246 |
| Objekt 6054 | Häuserreihe | 87221, 87222, 87223, 87224, 87225, 87226, 87227, 87228 |
| Objekt 6187 | Oberstufenschulhaus | 122993 |
| Objekt 6205 | Waschhaus | 191955014 |
| Objekt 6207 | Schweinestall | 210068892 |
| Objekt 6208 | Scheune | 210068894 |
| Objekt 6255 | Sägerei | 210286944 |
| Objekt 6274 | Waschhaus, ehem. | 210228398 |
| Objekt 6341 | Schopfanbau | 210267247 |
| Objekt 6389 | Hausteil 2 | 210281962 |
| Objekt 6413 | Verwaltungsgebäude | 210282931 |
| Objekt 6426 | Ehem. Mühlegebäude | 210213722 |
| Objekt 6429 | Speicher | 4274 |
| Objekt 6455 | Ehem. Mühle mit Wohnhaus | 210280889 |
| Objekt 6484 | Gasthaus «Zum Ochsen» | 11942 |
| Objekt 6489 | Ökonomiegebäude | 504231710 |
| Objekt 6540 | Wohnhaus | 115289 |
| Objekt 6544 | Bauernhaus | 210247223 |
| Objekt 6558 | Turnhalle mit Verbindungsbau (Trakt B) | 210041672 |
| Objekt 6559 | Singsaalgebäude mit Schulzimmern (Trakt C) | 210041672 |
| Objekt 6614 | Bauernhaus mit Scheune, sog. «Zuberhaus» | 12221 |
| Objekt 6691 | Bauernhaus mit Scheune | 12279 |
| Objekt 7114 | Halle 7 | 9062248 |
| Objekt 7126 | Halle 8 | 210186926 |
| Objekt 7138 | ehem. Vielzweckbauernhaus, Ökonomieteil | 210295544 |
| Objekt 7154 | Hausteil 1 | 2892 |
| Objekt 7187 | Breuer Lakehouse | 210282802 |
| Objekt 7277 | Wohnhaus mit Scheune | 191964747 |
| Objekt 7293 | Ehem. Sodafabrik | 78785 |
| Objekt 7340 | Magazin | 210264508 |
| Objekt 7360 | Nebengebäude | 210293119 |
| Objekt 7369 | Ehem. Zeughaus 2 | 9083922 |
| Objekt 7376 | Grossmünsterkapelle | 140370 |
| Objekt 7873 | Wohnhaus | 1150954 |
| Objekt 7888 | Wohnhaus | 1151196 |
| Objekt 7889 | Wohnhaus | 1151193 |
| Objekt 7895 | Wohnhaus | 1151280 |
| Objekt 7896 | Wohnhaus | 1151281 |
| Objekt 7897 | Wohnhaus | 1151283 |
| Objekt 7900 | Wohnhaus | 1151288 |
| Objekt 7910 | Wohnhaus | 1151198 |
| Objekt 7918 | Wohnhaus | 1151215 |
| Objekt 7919 | Wohnhaus | 1151213 |
| Objekt 7920 | Wohnhaus | 1151211 |
| Objekt 8016 | Wohnhaus | 1157196 |
| Objekt 8077 | Garagengebäude | 201035266 |
| Objekt 8079 | Garagengebäude | 201035212 |
| Objekt 8081 | Garagengebäude | 201035484 |
| Objekt 8083 | Garagengebäude | 201035223 |
| Objekt 8149 | Dienstgebäude Fahrleitungsunterhalt | 2366543, 302022198 |
| Objekt 8209 | Perrondach 2 | 302032128 |
| Objekt 8331 | Magazingebäude und Portierhaus | 302004344 |
| Objekt 8361 | Wohn- und Atelierhaus | 210279890 |
| Objekt 8693 | Doppelwohnhaus | 16284 |
| Objekt 8694 | Doppelwohnhaus | 16288 |
| Objekt 8695 | Doppelwohnhaus | 16292 |
| Objekt 8696 | Doppelwohnhaus | 16291 |
| Objekt 8697 | Doppelwohnhaus | 16285 |
| Objekt 8698 | Doppelwohnhaus | 16283 |
| Objekt 8933 | Wohnhaus | 302022734 |
| Objekt 9532 | Zwischentrakt | 191988281 |
| Objekt 9533 | Turnhalle | 191988281 |
| Objekt 9790 | Nukleartrakt 2 | 302007697 |
| Objekt 10012 | Doppelwohnhaus «Frohwies» | 44469 |
| Objekt 10019 | Badehaus | 210199937 |
| Objekt 10577 | Wohnhaus, ehem. Arbeiterwohnhaus I | 201038821 |
| Objekt 10581 | Wohn- und Geschäftshaus, ehem. Konsumgebäude | 47494 |
| Objekt 10586 | Ehem. Stallscheune | 201038819 |
| Objekt 10604 | Werkstattgebäude | 210100898 |
| Objekt 10803 | Scheune | 210216734 |
| Objekt 10816 | Waschhaus, ehem. | 210225910 |
| Objekt 11051 | Bauernhaus | 3135335 |
| Objekt 11277 | Wohnhaus mit Anbau | 210265539 |
| Objekt 11314 | Bauernwohnhaus | 210190274 |
| Objekt 11319 | Kirchgemeindehaus, ehem. Wohnhaus mit Poststelle | 210143075 |
| Objekt 11370 | Turnhalle | 210261974 |
| Objekt 12360 | Speicher | 210182692 |
| Objekt 12366 | Waschhaus | 210294454 |
| Objekt 12379 | Bauernhaus | 41187 |
| Objekt 12469 | Nebengebäude | 210194483 |
| Objekt 12607 | Wohnhaus | 36354, 3115668 |
| Objekt 12693 | Ref. Kirche | 50248 |
| Objekt 12782 | Ehem. Vielzweckbauernhaus | 2273924, 3115722 |
| Objekt 12907 | Gasthaus «Schwert» | 9003577 |
| Objekt 12913 | Speicher | 210194542 |
| Objekt 13354 | Kleinbauernhaus | 108608 |
| Objekt 13363 | Wohnhaus | 210095971, 210165207, 210165208 |
| Objekt 13377 | Wohnhaus | 53964 |
| Objekt 13522 | Waschhaus, ehem. | 210224883 |
| Objekt 13577 | Bauernhaus | 11173 |
| Objekt 13713 | Scheune | 210283165 |
| Objekt 13791 | Hausteil 1 | 210218911 |
| Objekt 13842 | Bauernhaus, ehem. | 12126 |
| Objekt 13845 | Bauernhaus, ehem. | 210069968, 12312 |
| Objekt 13983 | Hausteil 3 | 210280975 |
| Objekt 14011 | Ehem. Kornspeicher | 210266296 |
| Objekt 14079 | Bauernhaus | 8025 |
| Objekt 14086 | Waschhaus | 210237275 |
| Objekt 14137 | Doppelwohnhaus | 77341 |
| Objekt 14172 | Altes Schulhaus | 210089424 |
| Objekt 14194 | Wohnhaus mit Ladenlokal | 64179 |
| Objekt 14202 | Stallscheune | 210226880 |
| Objekt 14203 | Ref. Kirche | 210226915, 210226914 |
| Objekt 14216 | Hausteil 1 | 210227037 |
| Objekt 14222 | Ehem. Scheune | 210071108 |
| Objekt 14224 | Waschhaus, ehem. | 210227158 |
| Objekt 14257 | Ehem. Vielzweckbauernhaus | 210232454 |
| Objekt 14310 | Wohnhaus mit Schopf | 104213, 210134637 |
| Objekt 14372 | Ehem. Bauernwohnhaus «Vorder Au» | 11527158 |
| Objekt 14394 | Ehem. Bauernhaus | 210264150 |
| Objekt 14446 | Ehem. Trottgebäude | 210271729 |
| Objekt 14634 | Wohnhaus Horngasse 2/2a | 56701 |
| Objekt 14640 | Trottgebäude, ehem. | 210224811 |
| Objekt 14732 | Ehem. Speicher | 210257464 |
| Objekt 14745 | Hausteil 1 | 13112 |
| Objekt 15167 | Hausteil Nordost | 68833 |
| Objekt 15339 | Eingangszone, 1-EZ | 210199294, 210199295 |
| Objekt 15442 | Hausteil 4 | 59705 |
| Objekt 15485 | Poliklinik | 302049944, 302050038 |
| Objekt 15510 | Wohnhaus mit Laden | 210185191 |
| Objekt 15559 | Ehem. Waschhaus mit Holzschopf | 210275578 |
| Objekt 15604 | Ref. Kirche | 23845 |
| Objekt 15609 | Hausteil 1 | 36214 |
| Objekt 15615 | Sihlsteg | 56283 |
| Objekt 15638 | Hausteil 1 | 48628 |
| Objekt 15689 | Waschhaus, ehem. | 210229094 |
| Objekt 15708 | ehem. Tribünengebäude | 302016747, 302052885, 302052906 |
| Objekt 15711 | Wohnhaus und Atelier | 210284654 |
| Objekt 15738 | «Kölla-Bau» | 192013719 |
| Objekt 15801 | Zaun | 302023514 |
| Objekt 15832 | Haus zum Steineck | 3001079 |
| Objekt 15838 | Ehem. Chemiegebäude | 302023103, 302062145 |
| Objekt 15839 | Schulhaus, ehem. Eidg. Landwirtschaftliche Versuchsanstalt | 302016765 |
| Objekt 15840 | Kirchgemeindezentrum | 140370 |
| Objekt 15908 | Hausteil 1-3 | 210205977 |
| Objekt 15928 | Wohnhaus «Wartbad» | 3136015 |
| Objekt 15993 | Weinbauernhaus/Trotte/Waschhaus, heute alles unter Vers. Nr. 273 | 13115 |
| Objekt 15994 | Hausteil 2 | 13110 |
| Objekt 16033 | südwestseitiger Hausteil | 210188295 |
| Objekt 16121 | Terrassenhäuser | 210075086 |
| Objekt 16550 | Mensa | 9011691 |
| Objekt 16582 | Pavillon | 302040323 |
| Objekt 17940 | Speicher | 210240191 |
| Objekt 19400 | Ehem. Schützenhaus | 210224387 |
| Objekt 23706 | Hochkamin | 302034026 |
| Objekt 24404 | Nordöstlicher Hausteil | 3116823 |
| Objekt 26042 | Werkstatt | 9004528 |
Fehlende EGID-Werte in den ODB-Daten anhand Koordinaten identifizieren
Die weiter unten als Tabelle ausgegebene Abfrage überprüft, ob zu Objekten ohne eigentragene EGID-Werte eine EGID anhand der Koordinaten ergänzt werden kann.
Aufgrund der kleinen Anzahl Objekt in der Objektliste der Denkmalpflege ist vorgängig kein kompliziertes Herausfiltern von Objekten ohne EGID notwendig, es wird bloss anhand von Begriffen im Objekttitel gefiltert. Aus den vollständigen ODB-Daten müssten vor dem Lookup jene Objekte herausgefiltert werden, für welche aufgrund ihres Typs keine EGID erwartet wird und welche abgebrochen sind.
av_building_polys <- st_read(
here::here("data", "raw", "ARV_BASIS_AVZH_BODENBEDECKUNG_F.shp"),
query = "SELECT * FROM ARV_BASIS_AVZH_BODENBEDECKUNG_F WHERE ARTCHID = 0",
quiet = TRUE
) |>
st_transform(crs = 2056) |>
mutate(GWR_EGID = as.integer(GWR_EGID))
# # Bodenbedeckung amtliche Vermessung (EGID fehlt)
# av_bodenbedeckung_polys <- st_read(here::here("data", "raw", "Bo_BoFlaeche_A.shp"), quiet = TRUE) |>
# st_set_crs(2056) |>
# filter(ART <= 7) |>
# glimpse()
objektliste_denkmalpflege_with_looked_up_egids <- objektliste_denkmalpflege |>
filter(
!is.na(e_koordinate) & !is.na(n_koordinate)
) |>
filter(
# filter to remove objects where no EGID is expected
!str_detect(
tolower(objekt),
regex(
params$no_egid_expected_regex,
ignore_case = TRUE
)
)
) |>
st_as_sf(
coords = c("e_koordinate", "n_koordinate"),
crs = 2056,
remove = FALSE
) |>
st_join(
av_building_polys |>
select(GWR_EGID),
join = st_within,
left = TRUE
) |>
st_drop_geometry()missing_egids_via_coordinates <- objektliste_denkmalpflege_with_looked_up_egids |>
filter(
is.na(egid)
) |>
filter(
!is.na(GWR_EGID) & GWR_EGID > 0
) |>
select(odb_id, objekt, e_koordinate, n_koordinate, GWR_EGID) |>
distinct() |>
arrange(as.numeric(str_remove_all(odb_id, "\\D+")))missing_egids_via_coordinates |>
kable(
col.names = c(
"ODB-ID",
"Objekt",
"E-Koordinate",
"N-Koordinate",
"EGID aus AV"
)
) |>
column_spec(
1,
link = paste0(
"https://odb.zh.ch/odbwiki/mediawiki/index.php/",
missing_egids_via_coordinates$odb_id
)
)| ODB-ID | Objekt | E-Koordinate | N-Koordinate | EGID aus AV |
|---|---|---|---|---|
| Objekt 403 | Wohnhaus | 2707338 | 1252032 | 113051 |
| Objekt 404 | Ökonomiegebäude | 2707361 | 1252026 | 210142988 |
| Objekt 829 | Wasserkraftanlagen | 2686233 | 1264884 | 201005306 |
| Objekt 984 | Lift und Treppe | 2677178 | 1256223 | 210197078 |
| Objekt 1095 | Pulverhäuschen | 2688878 | 1234258 | 210298444 |
| Objekt 2181 | Grundwasserpumpwerk «Rheingasse» | 2688193 | 1277697 | 210070328 |
| Objekt 2765 | Filtergebäude | 2698324 | 1244601 | 210258754 |
| Objekt 3689 | Palmenhaus | 2682709 | 1247250 | 302023120 |
| Objekt 4537 | Trafostation B 6 Turm | 2688613 | 1280077 | 210239291 |
| Objekt 4736 | Wasserkraftanlage | 2714392 | 1245339 | 2277705 |
| Objekt 4982 | WR Hinwil 79: Maschinenpark | 2711897 | 1237445 | 47943 |
| Objekt 5292 | Wasserkraftanlage | 2677847 | 1269864 | 210297628 |
| Objekt 5381 | Kesselhaus und Werkstattgebäude von 1915 | 2689506 | 1282857 | 210238922 |
| Objekt 5443 | Pumpenhaus | 2693845 | 1269385 | 210293879 |
| Objekt 5785 | Gasreglerstation | 2676216 | 1250450 | 191900428 |
| Objekt 5877 | Wasserrecht Hinwil 198 | 2706722 | 1243797 | 38527 |
| Objekt 5926 | Kettenhaus | 2677321 | 1249917 | 121251 |
| Objekt 10012 | Doppelwohnhaus «Frohwies» | 2706404 | 1239840 | 44469 |
| Objekt 10019 | Badehaus | 2685359 | 1239093 | 210199937 |
| Objekt 10040 | Wandbild «Krieg und Frieden» | 2689770 | 1250818 | 210127827 |
| Objekt 16550 | Mensa | 2683803 | 1247610 | 9011691 |
| Objekt 19400 | Ehem. Schützenhaus | 2693578 | 1271875 | 210224387 |
| Objekt 24139 | Erweiterungstrakt | 2702620 | 1241677 | 50899 |
Objekte mit fehlerhaft erfassten Strassenadressen
Bei einigen Objekten sind die Strassenadressen in der ODB nicht korrekt erfasst. Die folgende Abfrage prüft die entsprechenden Werte darauf, ob nach der Trennung anhand des definierten Trennzeichens noch ein Strassenname vorhanden ist.
dubious_addresses_in_objektliste <- objektliste_left_join_via_egid |>
# Die Strassenadressen sind hier bereits separiert
filter(
str_detect(strasse_nr, regex("^(\\d+[a-zA-Z]?)$", ignore_case = TRUE))
) |>
select(odb_id) |>
distinct() |>
left_join(
objektliste_denkmalpflege |> select(odb_id, strasse_nr),
by = join_by(odb_id == odb_id)
) |>
arrange(as.numeric(str_remove_all(odb_id, "\\D+")))
kable(
dubious_addresses_in_objektliste,
col.names = c("ODB-ID", "Eingetragene Strassenadresse")
) |>
column_spec(
1,
link = paste0(
"https://odb.zh.ch/odbwiki/mediawiki/index.php/",
dubious_addresses_in_objektliste$odb_id
)
)| ODB-ID | Eingetragene Strassenadresse |
|---|---|
| Objekt 472 | Am Kanal 1; 3; 5; 7; 9; 11; 13; 15 |
| Objekt 2401 | Zürichstrasse 50; 52 |
| Objekt 2405 | Zürichstrasse 68; 70 |
| Objekt 2406 | Zürichstrasse 72; 74 |
| Objekt 2408 | Zürichstrasse 76; 78; 80 |
| Objekt 2410 | Zürichstrasse 63; 65 |
| Objekt 2412 | Zürichstrasse 58; 60; 62 |
| Objekt 2413 | Zürichstrasse 54; 56 |
| Objekt 2965 | Jonastrasse 17a; 17b; 17c; 17d; 17e |
| Objekt 2966 | Jonastrasse 7; 11; 13; 13a; 13b; 13c; 15 |
| Objekt 2967 | Jonastrasse 1; 3; 5 |
| Objekt 2975 | Jonastrasse 14; 18 |
| Objekt 10577 | Aretshaldenstrasse 11; 13; 15 |
| Objekt 10578 | Aretshaldenstrasse 1; 3; 5 |
| Objekt 10585 | Zürichstrasse 11; 15; 17; 19; 21; 23 |
| Objekt 10588 | Aretshaldenstrasse 17; 19 |
| Objekt 14514 | Hauptstrasse 21; 23 |
| Objekt 15815 | Sonnenplatz 1; 2 |
Objekte mit vermutlich fehlerhaft erfassten Postleitzahlen
Die folgende Abfrage überprüft, ob die Postleitzahlen in der ODB mit den anhand der Koordinaten ermittelten Postleitzahlen übereinstimmen.
Da pro Objekt nur ein Koordinatenpaar in der Datenbank gespeichert wird, die Objekte aber teilweise in mehreren Gemeinden gleichzeitig liegen (Grenzzeichen, Brücken), bedürfen die Resultate dieser Abfrage genauer menschlicher Überprüfung vor ihrer Übertragung in die Datenbank.
objects_with_dubious_zip_codes_in_odb <- objektliste_denkmalpflege_with_looked_up_zip_code |>
select(odb_id, objekt, gemeinde, strasse_nr, plz, ort, ZIP4, ADDITIONAL) |>
filter(!is.na(plz) & !is.na(ZIP4) & plz != ZIP4 ) |>
select(odb_id, objekt, plz, ZIP4)kable(
objects_with_dubious_zip_codes_in_odb,
col.names = c("ODB-ID", "Objektname", "PLZ in ODB", "PLZ korrekt")
) |>
column_spec(
1,
link = paste0(
"https://odb.zh.ch/odbwiki/mediawiki/index.php/",
objects_with_dubious_zip_codes_in_odb$odb_id
)
)| ODB-ID | Objektname | PLZ in ODB | PLZ korrekt |
|---|---|---|---|
| Objekt 403 | Wohnhaus | 8488; 8492 | 8492 |
| Objekt 404 | Ökonomiegebäude | 8488; 8492 | 8492 |
| Objekt 448 | Schulhaus Büel B | 8954 | 8103 |
| Objekt 947 | Umgebung des Wohn- und Atelierhauses Kurtz | 8137 | 8713 |
| Objekt 1292 | Panzersperre T02505e | 8038 | 8041 |
| Objekt 1305 | Infanteriewerk A04862 | 8005 | 8004 |
| Objekt 1680 | Stellwerk Nord | 2005 | 8005 |
| Objekt 1685 | Elektrische Zentrale | 4048 | 8048 |
| Objekt 1689 | Triebwagenhalle | 8048 | 8004 |
| Objekt 1708 | Schiebebühne Ost | 8048 | 8004 |
| Objekt 2035 | Gärten | 8482 | 8400 |
| Objekt 2207 | Gärten/Umgebung | 8400 | 8408 |
| Objekt 2345 | Nebengebäude Schloss Kefikon | 8543; 8544 | 8543 |
| Objekt 2941 | «Doktorhaus» mit Schopf | 8498; 8636 | 8636 |
| Objekt 2945 | Ehem. Gasthaus «Zum Kreuz» | 8498; 8636 | 8636 |
| Objekt 3206 | Ehem. Knochenmühle und Reibe | 8492 | 8489 |
| Objekt 3207 | Hauptgebäude | 8492 | 8489 |
| Objekt 3208 | Holzschopf | 8492 | 8489 |
| Objekt 3209 | Scheune | 8492 | 8489 |
| Objekt 3210 | Wohnhaus | 8492 | 8489 |
| Objekt 3332 | Wohn- und Ökonomiegebäude | 8400; 8404 | 8400 |
| Objekt 3358 | Gedeckte Holzbrücke | 8314 | 8482 |
| Objekt 3560 | Zahnärztliches Institut | 8006; 8032 | 8032 |
| Objekt 3696 | Hauptgebäude | 8006 | 8001 |
| Objekt 3698 | Gebäude HG (Hauptgebäude) | 8092 | 8006 |
| Objekt 3703 | Opernhaus | 8001 | 8008 |
| Objekt 3837 | Verwaltungsgebäude «Walcheturm/Walchetor» | 8001; 8006 | 8001 |
| Objekt 4118 | Ehem. Stationsgebäude Ettenhausen-Emmetschloo | 8620; 8623 | 8620 |
| Objekt 4457 | Unteres Kosthaus | 8304; 8600 | 8600 |
| Objekt 4458 | Mittleres Kosthaus, Ersatzneubau | 8304 | 8600 |
| Objekt 4529 | Transformatorenstation | 8543; 8546 | 8543 |
| Objekt 4597 | Transformatorenstation | 8314 | 8483 |
| Objekt 4942 | Düker | 8482 | 8314 |
| Objekt 4951 | Hausteil Nordost | 8132; 8133 | 8132 |
| Objekt 5418 | Thurbrücke | 8450; 8451 | 8450 |
| Objekt 5548 | Eisenbahnbrücke | 8451; 8450 | 8451 |
| Objekt 5876 | Turbinenturm | 8620 | 8623 |
| Objekt 5882 | Wasserrecht Hinwil 141 | 8620 | 8623 |
| Objekt 5884 | Weiher, Wasserrecht Hinwil 274 aktiv | 8620 | 8623 |
| Objekt 6267 | Alte Lorzenbrücke | 8933 | 6331 |
| Objekt 7544 | Fachwerkbrücke in Stahl | 8135; 8810 | 8135 |
| Objekt 8042 | Gärten/Rieterstrasse | 8400 | 8406 |
| Objekt 8186 | Limmatbrücke | 8005; 8037 | 8037 |
| Objekt 8216 | Limmatbrücke | 8005; 8037 | 8037 |
| Objekt 8332 | Querhalle und Perrondächer | 8001 | 8005 |
| Objekt 8473 | Brücke West | 8294 | 8194 |
| Objekt 8483 | Trasse, Böschungen, Stützmauern und Staketengeländer | 8002; 8003; 8004 | 8003 |
| Objekt 8491 | Sihlüberfall | 8036 | 8003 |
| Objekt 8494 | Meinrad-Lienert-Brunnen | 8004 | 8003 |
| Objekt 8994 | Figurenbrunnen | 8494 | 8493 |
| Objekt 9605 | «Forel-Brunnen» | 8600 | 8006 |
| Objekt 9678 | Weiher | 8482 | 8314 |
| Objekt 10141 | Oberwasserkanal | 8483 | 8486 |
| Objekt 13156 | Militärbrücke | 8004 | 8001 |
| Objekt 13590 | Bauernhaus, ehem. | 8212; 8447 | 8212 |
| Objekt 14380 | Wohnhaus mit Schopf | 8498; 8636 | 8636 |
| Objekt 14382 | Ehem. Bauernhaus | 8498; 8636 | 8636 |
| Objekt 14383 | Hausteil 1 | 8498; 8636 | 8636 |
| Objekt 14514 | Wohnhaus | 8321; 8489 | 8489 |
| Objekt 14777 | Ehem. Weberei | 8498 | 8636 |
| Objekt 15279 | Kanalwehr mit Überlauf | 8483 | 8486 |
| Objekt 15516 | Hausteil 1 | 8543; 8544 | 8543 |
| Objekt 15637 | Ehem. Weberei | 8498 | 8636 |
| Objekt 15643 | Magazin | 8498 | 8636 |
| Objekt 15685 | Literargymnasium LG und Realgymnasium RG | 8001; 8032 | 8001 |
| Objekt 15798 | Kommandoposten A05565 | 8447 | 8248 |
| Objekt 15825 | Wohnhaus mit Wirtschaft | 8400; 8401 | 8400 |
| Objekt 16550 | Mensa | 8006 | 8001 |
2.3 Daten Visualisierung
2.3.1 Grundbucheinträge nach Jahr und Einstufung
objektliste_denkmalpflege |>
mutate(year = year(grundbucheintrag)) |>
group_by(year, einstufung) |>
summarise(count = n()) |> # , .groups = "drop"
ungroup() |>
ggplot(aes(x = year, y = count, fill = einstufung)) +
theme_stat() +
geom_col(na.rm = TRUE) +
labs(
x = "Jahr des Grundbucheintrags",
y = "Anzahl Grundbucheinträge",
fill = "Einstufung"
)2.3.2 Gebäude im überkommunalen Inventar im Verhältnis zu allen Gebäuden im Kanton Zürich
Die folgende Grafik zeigt, welcher Anteil von Gebäuden im Kanton Zürich im Inventar der Denkmalschutzobjekte von überkommunaler Bedeutung (Stand 2025-11-09) geführt werden. Sie stellt dazu die EGIDs der (nicht ergänzten) Objektliste ins Verhältnis zu allen gültigen EGIDs im Kanton Zürich.
Die folgende Abfrage setzt voraus, dass nur die GWR-Daten zum Kanton Zürich eingelesen wurden. Wird eine andere Datenbasis verwendet, muss der EGID-Pool gegebenenfalls anhand des Kantonskürzels in gefiltert werden. Weil hier der für das Abschlussprojekt verwendete GWR-Auszug und die verwendete Objektliste nicht auf demselben Nachführungs-Stand sind, stimmen die Zahlen ausserdem nicht bis auf die letzte Kommastelle.
planungsregionen_ktzh <- read_csv(
here::here("data", "raw", "KTZH_00003082_00006563.csv"),
col_types = cols(
gemeinde_code = col_integer(),
bezirk_code = col_skip(),
bezirk_name = col_skip(),
raumplanungsregion_code = col_integer()
)
)
gwr_by_egid |>
left_join(
planungsregionen_ktzh |>
select(gemeinde_code, raumplanungsregion_name),
by = join_by(gemeindenummer == gemeinde_code)
) |>
left_join(
objektliste_denkmalpflege |>
separate_rows(egid, sep = "; ") |>
mutate(
im_inventar = TRUE,
egid = as.integer(egid)
) |>
select(egid, im_inventar, einstufung, eigentumsbeschrankung),
by = join_by(egid == egid)
) |>
mutate(im_inventar = replace_na(im_inventar, FALSE)) |>
group_by(raumplanungsregion_name, im_inventar) |>
summarise(count = n(), .groups = "drop_last") |>
mutate(
total = sum(count),
percentage = count / total * 100
) |>
ungroup() |>
ggplot(aes(
y = fct_rev(fct_infreq(raumplanungsregion_name)),
x = count,
fill = im_inventar
)) +
geom_col() +
geom_text(
data = . %>% filter(im_inventar == TRUE),
aes(label = sprintf("%.1f%%", percentage)),
hjust = -0.1,
size = 3
) +
scale_fill_manual(
values = c("TRUE" = "#0076BD", "FALSE" = "grey80"),
labels = c("TRUE" = "Im Inventar"),
breaks = c("TRUE"),
na.value = "grey80"
) +
theme_stat() +
labs(
y = "Planungsregion",
x = "Anzahl Gebäude",
fill = ""
)3 Ergebnisse
Die Visualisierungen Abbildung 1 und Abbildung 1 haben mit den sonstigen Analysen wenig zu tun, sie sind in erster Linie den gestellten formalen Anforderungen an das Abschlussprojekt geschuldet. Gleichwohl geben sie eine Antwort auf zwei häufige Fragen an unser Inventar.
Mein Schwerpunkt lag aber auf den Vergleichen der Angaben in der Objektliste mit den Angaben des Gebäude- und Wohnungsregisters (und der Amtlichen Vermessung). Eine kurze Einordnung:
- Das Einlesen der Objektliste ist im Moment deutlich zu aufwändig. Eine Verbesserung ist schon länger geplant und sollte nächstes Jahr umgesetzt werden können.
- Die Tabelle Tabelle 1 ist erschreckend lang geworden, vor allem angesichts dessen, dass die ermittelten EGIDs nicht einfach importiert werden können, sondern pro Objekt geprüft werden müssen. Die Menge an Ergänzungsvorschlägen ist vor allem dem Umstand geschuldet, dass die EGID in den Denkmalpflege-Daten noch ein vergleichsweise neues Attribut ist.
- Die Tabelle Tabelle 2 ist demgegenüber verdächtig kurz, was aber damit erklärbar ist, dass die EGID initial über eine ähnliche Abfrage überhaupt erst in den Daten der Denkamlpflege ergänzt wurde, weshalb die meisten Objekte mind. eine EGID eingetragen haben.
- Das die Tabelle Tabelle 3 so kurz ist, liegt vor allem daran, dass ich die Daten der Objektliste ungefähr jährlich auf das Problem hin überprüft habe.
- Die Tabelle Tabelle 4 enthält vor allem Hinweise auf Objekte, die auf der Grenze zwischen mehreren Ortschaften liegen.
4 Schlussfolgerungen
Der Ansatz ist vielversprechend, die Arbeit an diesem Abschlussprojekt hat bereits eine Reihe von Korrekturen in der produktiven Objektdatenbank nach sich gezogen und wird sicher noch weitere Verbesserungen in der Datenqualität zeitigen.
Mögliche Ausbaustufen schweben mir vor, etwa:
die Befunde wo geeignet direkt in Form von importierbaren TSV-Dateien auszugeben, oder mit R Wikitext für sogenannte Pendenzen im Wiki zu erzeugen, die von den Kolleginnen und Kollegen einfacher direkt in der ODB selbst geprüft und angewendet werden können.
Plausibilisierung von Baujahren: Ergänzung fehlender Baujahre mit GWR-Baujahren >= 1815 in Attribute “BaujahrMin” und “BaujahrMax” (die Gebäudeversicherung Kanton Zürich, auf deren Daten die älteren Baujahre im GWR zurückgehen, wurde erst Ende 1808 gegründet und weiter zurückliegende Werte sind nicht verlässlich)
Die Werte für das Attribut Abbruchjahr zu plausibilisieren und fehlende Werte zu ergänzen
Redundanz/Doppelte Objekte zu erkennen: Wegen Bedienfehlern und fehlenden automatisierten Prüfungen passiert es teilweise, dass dasselbe Objekt zweimal erfasst wird, ohne dass diesen Objekten voneinander abgegrenzte Objekt-Teile in der gebauten Realität entsprechen. Solche Objekte erkennt man daran, dass sie in der Objektliste bzw. in der Objektdatenbank genau dieselben Werte in folgenden Attributen haben:
- Gemeinde und Strassenadresse
- GVZ Nrn.
- EGIDs
Überschneidungen zwischen Objekten im Blick zu behalten: Da die Denkmalpflege für ihre Zwecke die Objekte nach eigenen Gesichtspunkten gliedert und strukturiert (z. B. nach Bauphasen), stimmt der Umfang eines Objekts nicht immer mit dem Umfang eines Objekts der Gebäudeversicherung oder des Gebäude- und Wohnungsregisters überein. Das heisst, dass eine ODB-ID für einen kleineren oder grösseren Umfang stehen kann als über eine EGID oder eine GVZ-Nr. zum selben Bau identifiziert wird. EGID bzw. GVZ-Nr. werden dann entsprechend mehrmals zu verschiedenen ODB-Objekten eingetragen. Ebenso kann dieselbe Strassenadresse bei mehreren ODB-Objekten als Adresse eingetragen sein. Herausforderung: Unterscheiden der gewünschten Überschneidungen von den unerwünschten Doppelungen.
Alles in allem war dieses Abschlussprojekt deshalb ein wertvoller erster Schritt bei der Arbeit mit R! Vor allem Quarto und das komfortable sf-Paket bereiten mir viel Freude!
5 Literatur
Fussnoten
Glasplatten, Negative, Abzüge und Dias – Das Bildgedächtnis des Kantons Zürich, in: einst und jetzt (7), 08.2015, S. 4–13.↩︎
Entwicklung der Objektdatenbank der Zürcher Denkmalpflege, in: Zürcher Denkmalpflege, 22. Bericht 2013-2014, Egg 2019 (22), S. 1–17. Online: <https://ad.zh.ch/wp-content/uploads/2019/12/ZD22_KDP_Objektdatenbank_S_1-18.pdf>.↩︎
Versicherte Gebäude und Amtliche Vermessung, 10.2015. Online: <https://www.zh.ch/content/dam/zhweb/bilder-dokumente/themen/planen-bauen/geoinformation/kataster/amtliche-vermessung/broschuerengbz/01_gvz_brosch_schaetzertagung_av_2015.pdf>.↩︎
Geschichte der Gebäudeadressierung, 06.2025. Online: <https://www.giswiki.ch/index.php?title=Geschichte_der_Geb%C3%A4udeadressierung&oldid=71372>, Stand: 01.12.2025.↩︎
Weisung zur Erfassung der Gebäude in der amtlichen Vermessung (AV) und im Gebäude- und Wohnungsregister (GWR) Version 1.2, Neuchâtel 2023. Online: <https://www.housing-stat.ch/files/1754-2300.pdf>.↩︎