!!===================================================================================== !! Kanton Zürich !! Baudirektion Kanton Zürich !! Amt für Raumentwicklung !! Abteilung Geoinformation !! Stampfenbachstrasse 12 !! 8090 Zürich !! !! www.geoportal.zh.ch !! !! Geobasisdatensatz Nr. 106-ZH Kommunale Energieplanung !! !! Transfermodell !!===================================================================================== !! Revision History !! !! 2023.02.10/tgr Erste Version basierend auf den Vorgaben der FIG !!===================================================================================== !! Bemerkungen: !! !! - Transfermodell fuer Publikation !! Das Modell beschreibt die Daten nach der Prozessierung. !! Das Modell ist ein Anwendungsmodell fuer den GIS-Browser und die Datenabgabe. !! !! - Die Daten werden nicht an den Bund geliefert !! !! - Constraints !! !! Constraints sind nach Modellierungshandbuch KGDMZH nicht erlaubt. !! Constraints werden in diesem Modell beschreibend als Kommentar aufgefuehrt. !! Die Constraints koennen durch das Entfernen der Kennzeichnung als Kommentierung aktiviert werden. !! Fuer verwendete Funktionen muessen die enstprechenden Modelle mit den Funktionen importiert werden. !! IMPORTS IGSFunction; fuer IGSFunction.IGS_getObjectCount, IGSFunction.IGS_equals, IGSFunction.IGS_concatString !! oder !! IMPORTS INTERLIS; fuer INTERLIS.objectCount !! IMPORTS Text; fuer Text.matches, Text.concat !! !! Constraints Heizzentrale_Verbundgebiet_Beziehung: !! Einige Constraints mit VerbundgebietRef->Status ==|<> #in_Betrieb !! koennten vereinfacht oder weggelassen werden, weil ein weiterer Constraint !! definiert, dass nur VerbundgebietRef->Status=in_Betrieb Heizzentralen aufweisen duerfen. !! Die Constraints werden aber so belassen zur Verstaendigung und fuer eventuelle zukuenftige Aenderungen. !!===================================================================================== INTERLIS 2.3; !!@ GeoLion="https://geolion.zh.ch/geodatensatz/show?nbid=4310" MODEL Energieplanung_kommunal_ZH_V1_LV95 (de) AT "http://models.geo.zh.ch" VERSION "2023-02-09" = IMPORTS UNQUALIFIED INTERLIS; IMPORTS UNQUALIFIED Basis_ZH_V1_LV95; IMPORTS Units; DOMAIN TOPIC Energieplanung = DOMAIN !!@ comment="Energiequelle"; Energiequelle = (ARA_Abwaerme, KVA_Abwaerme, Prozess_Abwaerme, Grundwasser, Seewasser, Fliessgewaesser, Holz, Erdwaerme, Luft, nicht_definiert, andere); Eignungsgebiet_Energiequelle = (ARA_Abwaerme, KVA_Abwaerme, Prozess_Abwaerme, Grundwasser, Seewasser, Fliessgewaesser, Holz, Erdwaerme, Luft, andere); !!@ comment="Status eines Verbundgebietes"; Verbundgebiet_Status = (in_Betrieb, in_Planung, in_Pruefung); !!@ comment="Status eines Gasgebietes"; Gasgebiet_Status = (Stilllegung, Fortbestand, in_Pruefung); !!@ comment="Stilllegung ab Jahr eines Gasgebietes"; Gasgebiet_Stilllegung_ab = (ab_2025, ab_2030, ab_2035, ab_2040, ab_2045); !!@ comment="Stilllegung bis Jahr eines Gasgebietes"; Gasgebiet_Stilllegung_bis = (bis_2030, bis_2035, bis_2040, bis_2045, bis_2050); !!@ comment="Anlageleistung bis 100000 KW / 100 MW"; Leistung_KW = 1 .. 100000; !!@ comment="Energielieferung in MWh"; Energielieferung_MWh = 1 .. 100000; !!@ comment="Temperatur Grad Celsius"; Temperatur = -100 .. 200; !!@ comment="Prozent"; Prozent = 0 .. 100; !!@ comment="Ja/Nein"; JaNein = (Ja, Nein); !!@ comment="===================================================================="; !!@ comment="Klasse Gemeinde"; CLASS Gemeinde = !!@ comment="BFS Nummer der Gemeinde"; BFSNr : MANDATORY ZHBfsNummer; !!@ comment="Name der Gemeinde"; Gemeindename : MANDATORY TEXT*80; !!@ comment="Kantonales Verfuegungsdatum der Energieplanung"; Kantonales_Verfuegungsdatum : MANDATORY ZHDatum; !!@ comment="Letzte Aktualisierung des Datensatzes"; Letzte_Aktualisierung : MANDATORY ZHDatum; !!@ comment="Kontakt mit Bezeichnung, Telefon, Mail, Internet (aus Basismodell)"; Kontakt : ZHKontakt; UNIQUE BFSNr; END Gemeinde; !!@ comment="===================================================================="; !!@ comment="Klasse Verbundgebiet"; CLASS Verbundgebiet = !!@ comment="ID fuer KGDM, zusammengesetzt mit _"; ID_Kanton : MANDATORY TEXT*100; !!@ comment="Gebietsidentifikator der Gemeinde"; ID_Gemeinde : MANDATORY TEXT*100; !!@ comment="Status des Verbundgebietes"; Status : MANDATORY Verbundgebiet_Status; !!@ comment="Jahr Erschliessung des Verbundgebietes bei Status=in_Betrieb, sonst nicht definieren"; Jahr_Inbetriebnahme : ZHJahr; !!@ comment="Jahr ab geplanter Erschliessung des Verbundgebietes bei Status=in_Planung/in_Pruefung, sonst nicht definieren"; Jahr_geplant_ab : ZHJahr; !!@ comment="Bezeichnung des Verbundgebietes"; Bezeichnung : MANDATORY TEXT*200; !!@ comment="Bemerkung zum Verbundgebiet"; Bemerkung : TEXT*200; !!@ comment="Energiequelle des Verbundgebietes"; Energiequelle : MANDATORY Energiequelle; !!@ comment="Andere Energiequelle oder Kombination mehrerer Energiequellen des Verbundgebietes bei Energiequelle=andere, sonst nicht definieren"; Energiequelle_andere : TEXT*200; !!@ comment="Anteil fossiler Energien in Prozent des Verbundgebietes bei Status=in_Betrieb, sonst optional"; Anteil_fossiler_Energien : Prozent; !!@ comment="Vorlauftemperaturniveau 1 in Grad Celcius"; Vorlauftemperaturniveau_1 : Temperatur; !!@ comment="Vorlauftemperaturniveau 2 in Grad Celcius"; Vorlauftemperaturniveau_2 : Temperatur; !!@ comment="Potenzielle Energielieferung im Endausbau in MWh"; Energielieferung_Endausbau : Energielieferung_MWh; !!@ comment="Energielieferung im Ist-Zustand in MWh"; Energielieferung_Ist_Zustand : Energielieferung_MWh; !!@ comment="Flaechengeometrie des Verbundgebietes"; Geometrie : MANDATORY ZHFlaeche2D; !!@ comment="Wenn Status=in_Betrieb kann Jahr_Inbetriebnahme definiert sein, sonst darf Jahr_Inbetriebnahme nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" (Status == #in_Betrieb)"; !!@ comment=" OR"; !!@ comment=" ((Status <> #in_Betrieb) AND NOT (DEFINED(Jahr_Inbetriebnahme)));"; !!@ comment="Wenn Status=in_Betrieb muss Anteil_fossiler_Energien definiert sein, sonst Anteil_fossiler_Energien optional"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Status == #in_Betrieb) AND DEFINED(Anteil_fossiler_Energien))"; !!@ comment=" OR"; !!@ comment=" (Status <> #in_Betrieb);"; !!@ comment="Wenn Status=in_Betrieb kann Energielieferung_Ist_Zustand definiert sein, sonst darf Energielieferung_Ist_Zustand nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" (Status == #in_Betrieb)"; !!@ comment=" OR"; !!@ comment=" ((Status <> #in_Betrieb) AND NOT (DEFINED(Energielieferung_Ist_Zustand)));"; !!@ comment="Wenn Status=in_Betrieb darf nicht Energiequelle=nicht_definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Status == #in_Betrieb) AND NOT (Energiequelle == #nicht_definiert))"; !!@ comment=" OR"; !!@ comment=" (Status <> #in_Betrieb);"; !!@ comment="Wenn Status=in_Planung oder in_Pruefung kann Jahr_geplant_ab definiert sein, sonst darf Jahr_geplant_ab nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Status == #in_Betrieb) AND NOT (DEFINED(Jahr_geplant_ab)))"; !!@ comment=" OR"; !!@ comment=" (Status <> #in_Betrieb);"; !!@ comment="Wenn Energiequelle=andere muss Energiequelle_andere definiert sein, sonst darf Energiequelle_andere nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Energiequelle == #andere) AND DEFINED(Energiequelle_andere))"; !!@ comment=" OR"; !!@ comment=" ((Energiequelle <> #andere) AND NOT (DEFINED(Energiequelle_andere)));"; UNIQUE ID_Kanton; END Verbundgebiet; !!@ comment="Beziehung Verbundgebiet zu Gemeinde"; ASSOCIATION Verbundgebiet_Gemeinde_Beziehung = !!@ comment="Referenz zu Gemeinde"; GemeindeRef -<#> {1} Gemeinde; !!@ comment="Referenz zu Verbundgebiet"; VerbundgebietRef -- {0..*} Verbundgebiet; !!@ comment="Verbundgebiet->ID_Kanton gleich Gemeinde->BFSNr + '_' + Verbundgebiet->ID_Gemeinde"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" IGSFunction.IGS_equals(VerbundgebietRef->ID_Kanton,IGSFunction.IGS_concatString(GemeindeRef->BFSNr,IGSFunction.IGS_concatString("_",VerbundgebietRef->ID_Gemeinde)));"; END Verbundgebiet_Gemeinde_Beziehung; !!@ comment="===================================================================="; !!@ comment="Klasse Heizzentrale"; CLASS Heizzentrale = !!@ comment="ID fuer KGDM, zusammengesetzt mit _"; ID_Kanton : MANDATORY TEXT*100; !!@ comment="Identifikator der Gemeinde"; ID_Gemeinde : MANDATORY TEXT*100; !!@ comment="Bezeichnung der Heizzentrale"; Bezeichnung : TEXT*200; !!@ comment="Bemerkung zur Heizzentrale"; Bemerkung : TEXT*200; !!@ comment="Energiequelle der Heizzentrale"; Energiequelle : MANDATORY Energiequelle; !!@ comment="Andere Energiequelle oder Kombination mehrerer Energiequellen bei Energiequelle=andere, sonst nicht definieren"; Energiequelle_andere : TEXT*200; !!@ comment="Anteil fossiler Energien in Prozent der Heizzentrale bei Verbundgebiet.Status=in_Betrieb, sonst optional"; Anteil_fossiler_Energien : Prozent; !!@ comment="Leistung der Heizzentrale in KW"; Leistung : Leistung_KW; !!@ comment="Vorlauftemperatur in Grad Celsius"; Vorlauftemperatur : Temperatur; !!@ comment="Potenzielle Energielieferung im Endausbau der Heizzentrale in MWh"; Energielieferung_Endausbau : Energielieferung_MWh; !!@ comment="Energielieferung im Ist-Zustand der Heizzentrale in MWh"; Energielieferung_Ist_Zustand : Energielieferung_MWh; !!@ comment="Punktgeometrie der Heizzentrale"; Geometrie : MANDATORY ZHKoord2D; !!@ comment="Wenn Energiequelle=andere muss Energiequelle_andere definiert sein, sonst darf Energiequelle_andere nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Energiequelle == #andere) AND DEFINED(Energiequelle_andere))"; !!@ comment=" OR"; !!@ comment=" ((Energiequelle <> #andere) AND NOT (DEFINED(Energiequelle_andere)));"; UNIQUE ID_Kanton; END Heizzentrale; !!@ comment="Beziehung Heizzentrale zu Verbundgebiet"; ASSOCIATION Heizzentrale_Verbundgebiet_Beziehung = !!@ comment="Referenz zu Verbundgebiet"; VerbundgebietRef -<#> {1} Verbundgebiet; !!@ comment="Referenz zu Heizzentrale"; HeizzentraleRef -- {0..*} Heizzentrale; !!@ comment="Heizzentrale->ID_Kanton gleich Verbundgebiet->Gemeinde->BFSNr + '_' + Heizzentrale->ID_Gemeinde"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" IGSFunction.IGS_equals(HeizzentraleRef->ID_Kanton,IGSFunction.IGS_concatString(VerbundgebietRef->GemeindeRef->BFSNr,IGSFunction.IGS_concatString("_",HeizzentraleRef->ID_Gemeinde)));"; !!@ comment="Nur wenn Verbundgebiet->Status=in_Betrieb duerfen Heizzentralen definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" (VerbundgebietRef->Status == #in_Betrieb)"; !!@ comment=" OR"; !!@ comment=" ((VerbundgebietRef->Status <> #in_Betrieb) AND (INTERLIS.objectCount(HeizzentraleRef) == 0));"; !!@ comment="Wenn Verbundgebiet->Status=in_Betrieb muss Heizzentrale->Anteil_fossiler_Energien definiert sein, sonst Anteil_fossiler_Energien optional"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((VerbundgebietRef->Status == #in_Betrieb) AND DEFINED(HeizzentraleRef->Anteil_fossiler_Energien))"; !!@ comment=" OR"; !!@ comment=" (VerbundgebietRef->Status <> #in_Betrieb);"; !!@ comment=" Wenn Verbundgebiet->Status = in_Betrieb kann Heizzentrale->Energielieferung_Ist_Zustand definiert sein, sonst darf Energielieferung_Ist_Zustand nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" (VerbundgebietRef->Status == #in_Betrieb)"; !!@ comment=" OR"; !!@ comment=" ((VerbundgebietRef->Status <> #in_Betrieb) AND NOT (DEFINED(HeizzentraleRef->Energielieferung_Ist_Zustand)));"; !!@ comment="Wenn Verbundgebiet->Status=in_Betrieb darf nicht Heizzentrale->Energiequelle=nicht_definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((VerbundgebietRef->Status == #in_Betrieb) AND NOT (HeizzentraleRef->Energiequelle == #nicht_definiert))"; !!@ comment=" OR"; !!@ comment=" (VerbundgebietRef->Status <> #in_Betrieb);"; END Heizzentrale_Verbundgebiet_Beziehung; !!@ comment="===================================================================="; !!@ comment="Klasse Eignungsgebiet"; CLASS Eignungsgebiet = !!@ comment="ID fuer KGDM, zusammengesetzt mit _"; ID_Kanton : MANDATORY TEXT*100; !!@ comment="Gebietsidentifikator der Gemeinde"; ID_Gemeinde : MANDATORY TEXT*100; !!@ comment="Bezeichnung des Eignungsgebietes"; Bezeichnung : MANDATORY TEXT*200; !!@ comment="Bemerkung zum Eignungsgebiet"; Bemerkung : TEXT*200; !!@ comment="Energiequelle Prioritaet 1 des Eignungsgebietes"; Energiequelle_Prioritaet_1 : MANDATORY Eignungsgebiet_Energiequelle; !!@ comment="Energiequelle Prioritaet 2 des Eignungsgebietes"; Energiequelle_Prioritaet_2 : Eignungsgebiet_Energiequelle; !!@ comment="Andere Energiequelle oder Kombination mehrerer Energiequellen des Eignungsgebietes bei Energiequelle_Prioritaet_1=andere, sonst nicht definieren"; Energiequelle_andere_Prioritaet_1 : TEXT*200; !!@ comment="Andere Energiequelle oder Kombination mehrerer Energiequellen des Eignungsgebietes bei Energiequelle_Prioritaet_2=andere, sonst nicht definieren"; Energiequelle_andere_Prioritaet_2 : TEXT*200; !!@ comment="Nicht priorisierte, aber moegliche Energiequellen"; Weitere_moegliche_Energiequellen : TEXT*200; !!@ comment="Koordinierte Energienutzung (ja/nein)"; Koordinierte_Energienutzung : JaNein; !!@ comment="Flaechengeometrie des Eignungsgebietes"; Geometrie : MANDATORY ZHFlaeche2D; !!@ comment="Wenn Energiequelle_Prioritaet_1=andere muss Energiequelle_andere_Prioritaet_1 definiert sein, sonst darf Energiequelle_andere_Prioritaet_1 nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Energiequelle_Prioritaet_1 == #andere) AND DEFINED(Energiequelle_andere_Prioritaet_1))"; !!@ comment=" OR"; !!@ comment=" ((Energiequelle_Prioritaet_1 <> #andere) AND NOT (DEFINED(Energiequelle_andere_Prioritaet_1)));"; !!@ comment="Wenn Energiequelle_Prioritaet_2=andere muss Energiequelle_andere_Prioritaet_2 definiert sein, sonst darf Energiequelle_andere_Prioritaet_2 nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Energiequelle_Prioritaet_2 == #andere) AND DEFINED(Energiequelle_andere_Prioritaet_2))"; !!@ comment=" OR"; !!@ comment=" ((Energiequelle_Prioritaet_2 <> #andere) AND NOT (DEFINED(Energiequelle_andere_Prioritaet_2)));"; UNIQUE ID_Kanton; END Eignungsgebiet; !!@ comment="Beziehung Eignungsgebiet zu Gemeinde"; ASSOCIATION Eignungsgebiet_Gemeinde_Beziehung = !!@ comment="Referenz zu Gemeinde"; GemeindeRef -<#> {1} Gemeinde; !!@ comment="Referenz zu Eignungsgebiet"; EignungsgebietRef -- {0..*} Eignungsgebiet; !!@ comment="Eignungsgebiet->ID_Kanton gleich Gemeinde->BFSNr + '_' + Eignungsgebiet->ID_Gemeinde"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" IGSFunction.IGS_equals(EignungsgebietRef->ID_Kanton,IGSFunction.IGS_concatString(GemeindeRef->BFSNr,IGSFunction.IGS_concatString("_",EignungsgebietRef->ID_Gemeinde)));"; END Eignungsgebiet_Gemeinde_Beziehung; !!@ comment="===================================================================="; !!@ comment="Klasse Gasgebiet"; CLASS Gasgebiet = !!@ comment="ID fuer KGDM, zusammengesetzt mit _"; ID_Kanton : MANDATORY TEXT*100; !!@ comment="Gebietsidentifikator der Gemeinde"; ID_Gemeinde : MANDATORY TEXT*100; !!@ comment="Status des Gasgebietes"; Status : MANDATORY Gasgebiet_Status; !!@ comment="Bezeichnung des Gasgebietes"; Bezeichnung : TEXT*200; !!@ comment="Bemerkung zum Gasgebiet"; Bemerkung : TEXT*200; !!@ comment="Jahr ab geplanter Stilllegung bei Status=Stilllegung, sonst nicht definieren"; Stilllegung_ab : Gasgebiet_Stilllegung_ab; !!@ comment="Jahr bis zu geplanter Stilllegung bei Status=Stilllegung, sonst nicht definieren"; Stilllegung_bis : Gasgebiet_Stilllegung_bis; !!@ comment="Flaechengeometrie des Gasgebietes"; Geometrie : MANDATORY ZHFlaeche2D; !!@ comment="Wenn Status=Fortbestand darf Stilllegung_ab und Stilllegung_bis nicht definiert sein"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" ((Status == #Fortbestand) AND NOT (DEFINED(Stilllegung_ab)) AND NOT (DEFINED(Stilllegung_bis)))"; !!@ comment=" OR"; !!@ comment=" (Status <> #Fortbestand);"; UNIQUE ID_Kanton; END Gasgebiet; !!@ comment="Beziehung Gasgebiet zu Gemeinde"; ASSOCIATION Gasgebiet_Gemeinde_Beziehung = !!@ comment="Referenz zu Gemeinde"; GemeindeRef -<#> {1} Gemeinde; !!@ comment="Referenz zu Gasgebiet"; GasgebietRef -- {0..*} Gasgebiet; !!@ comment="Gasgebiet->ID_Kanton gleich Gemeinde->BFSNr + '_' + Gasgebiet->ID_Gemeinde"; !!@ comment="MANDATORY CONSTRAINT"; !!@ comment=" IGSFunction.IGS_equals(GasgebietRef->ID_Kanton,IGSFunction.IGS_concatString(GemeindeRef->BFSNr,IGSFunction.IGS_concatString("_",GasgebietRef->ID_Gemeinde)));"; END Gasgebiet_Gemeinde_Beziehung; END Energieplanung; END Energieplanung_kommunal_ZH_V1_LV95.