Velg klimasted ut fra georefereringen, og rett adresse fra IFC
En ny eksport av Nordhusstykket 5 viste hva mer modellen kan bære, og avdekket feil. Posisjon og klimasted - IfcMapConversion med IfcProjectedCRS gjøres om til breddegrad og lengdegrad. EUREF89 og WGS 84 UTM, NN2000-varianter og Web Mercator forstås. Omregningen er kontrollert mot PROJ. - Vectorworks' standardplassering i Washington, som står når ingenting er satt, kjennes igjen og brukes ikke. - Ny `posisjon` under [klima]. Uten kommune velger beregningen nærmeste av de 358 klimastedene i TMY-arkivet, og sier i rapporten hvor langt unna det ligger. Opplysninger fra modellen - Adressen hentes fra IfcBuilding eller IfcSite. Før ble den første postadressen i filen brukt, og det var firmaets adresse i forfatteropplysningene. - Energirådgiver fra person og organisasjon i forfatteropplysningene. - Byggets navn fra prosjektet når bygningen heter «Default Building». - Referansehøyde og terrenghøyde på bygningen gir hvor mye av grunnmuren som står over bakken. - IsLandmarked gir en merknad om at vernede bygninger er unntatt energiattestplikten. En eksport uten bygningsdeler stopper nå med en feilmelding som peker på lagtilknytningen i eksportdialogen, i stedet for å skrive en tom bygning. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
This commit is contained in:
+22
-5
@@ -112,11 +112,14 @@ pub fn hent_klima(b: &Bygning) -> Result<(Vaerdata, String, bool)> {
|
||||
== crate::data::normaliser_stedsnavn(REFERANSEKLIMA);
|
||||
return Ok((v, navn, er_referanse));
|
||||
}
|
||||
let sted = b
|
||||
.klima
|
||||
.kommune
|
||||
.clone()
|
||||
.unwrap_or_else(|| REFERANSEKLIMA.to_string());
|
||||
// Uten kommune, men med posisjon, velges klimastedet nærmest posisjonen.
|
||||
let sted = match (&b.klima.kommune, b.klima.posisjon) {
|
||||
(Some(k), _) => k.clone(),
|
||||
(None, Some([bredde, lengde])) => {
|
||||
tmy::naermeste_kommune(&crate::klima::geo::Posisjon { bredde, lengde })?.0
|
||||
}
|
||||
(None, None) => REFERANSEKLIMA.to_string(),
|
||||
};
|
||||
let er_referanse = crate::data::normaliser_stedsnavn(&sted)
|
||||
== crate::data::normaliser_stedsnavn(REFERANSEKLIMA);
|
||||
let v = tmy::for_kommune(&sted)?;
|
||||
@@ -140,6 +143,20 @@ pub fn kjor_med_klima(
|
||||
let varmetap = Varmetapsbudsjett::beregn(&lost);
|
||||
let systemer_oppsett = systemer::sett_opp_systemer(b, &lost, kilde)?;
|
||||
let mut merknader = systemer_oppsett.merknader.clone();
|
||||
if b.klima.kommune.is_none() && b.klima.epw.is_none() {
|
||||
if let Some([bredde, lengde]) = b.klima.posisjon {
|
||||
let bygg = crate::klima::geo::Posisjon { bredde, lengde };
|
||||
let stasjon = crate::klima::geo::Posisjon {
|
||||
bredde: vaerdata.bredde,
|
||||
lengde: vaerdata.lengde,
|
||||
};
|
||||
merknader.push(format!(
|
||||
"Klimastedet {klimanavn} er valgt ut fra posisjonen {bredde:.4}° nord, {lengde:.4}° øst, \
|
||||
{:.0} km unna. Sett `kommune` under [klima] for å velge et annet.",
|
||||
bygg.avstand_km(&stasjon)
|
||||
));
|
||||
}
|
||||
}
|
||||
merknader.extend(
|
||||
crate::modell::kontroll::kontroller(b)
|
||||
.into_iter()
|
||||
|
||||
Reference in New Issue
Block a user