mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
added RIR detection to summary report
This commit is contained in:
parent
90c9466421
commit
fba5b2b3cb
1 changed files with 30 additions and 4 deletions
|
|
@ -320,7 +320,7 @@ def extract_building_parts_epr(text):
|
||||||
def extract_building_parts_summary(text):
|
def extract_building_parts_summary(text):
|
||||||
"""
|
"""
|
||||||
Extracts building parts and associated dimensions from the summary report PDF.
|
Extracts building parts and associated dimensions from the summary report PDF.
|
||||||
This includes Main Property and multiple extensions if they exist.
|
This includes Main Property, multiple extensions if they exist, and Room in Roof areas.
|
||||||
"""
|
"""
|
||||||
data = []
|
data = []
|
||||||
|
|
||||||
|
|
@ -368,6 +368,20 @@ def extract_building_parts_summary(text):
|
||||||
"Party Wall Length (m)": party_wall_length
|
"Party Wall Length (m)": party_wall_length
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Check specifically for "Room(s) in Roof" entries, which only have Floor Area
|
||||||
|
room_in_roof_pattern = re.compile(r"Room\(s\) in Roof:\s*([\d.]+)")
|
||||||
|
room_in_roof_match = room_in_roof_pattern.search(floor_data)
|
||||||
|
if room_in_roof_match:
|
||||||
|
floor_area = float(room_in_roof_match.group(1))
|
||||||
|
data.append({
|
||||||
|
"Building Part": part_name,
|
||||||
|
"Floor Level": "Room in Roof",
|
||||||
|
"Floor Area (m2)": floor_area,
|
||||||
|
"Room Height (m)": None, # Placeholder for missing data
|
||||||
|
"Perimeter (m)": None, # Placeholder for missing data
|
||||||
|
"Party Wall Length (m)": None # Placeholder for missing data
|
||||||
|
})
|
||||||
|
|
||||||
# Calculate aggregated dimensions
|
# Calculate aggregated dimensions
|
||||||
main_property = [part for part in data if "Main Property" in part["Building Part"]]
|
main_property = [part for part in data if "Main Property" in part["Building Part"]]
|
||||||
first_extensions = [part for part in data if "1st Extension" in part["Building Part"]]
|
first_extensions = [part for part in data if "1st Extension" in part["Building Part"]]
|
||||||
|
|
@ -376,10 +390,14 @@ def extract_building_parts_summary(text):
|
||||||
"Total Ground Floor Area (m2)": sum(
|
"Total Ground Floor Area (m2)": sum(
|
||||||
[part["Floor Area (m2)"] for part in data if "Lowest Floor" in part["Floor Level"]]
|
[part["Floor Area (m2)"] for part in data if "Lowest Floor" in part["Floor Level"]]
|
||||||
),
|
),
|
||||||
"RIR Floor Area": 0,
|
"RIR Floor Area": sum(
|
||||||
"Main Building Wall Area (m2)": sum([x["Perimeter (m)"] * x["Room Height (m)"] for x in main_property]),
|
[part["Floor Area (m2)"] for part in data if "Room in Roof" in part["Floor Level"]]
|
||||||
|
),
|
||||||
|
"Main Building Wall Area (m2)": sum([x["Perimeter (m)"] * x["Room Height (m)"] for x in main_property if
|
||||||
|
x["Perimeter (m)"] and x["Room Height (m)"]]),
|
||||||
"First Extension Wall Area (m2)": sum(
|
"First Extension Wall Area (m2)": sum(
|
||||||
[x["Perimeter (m)"] * x["Room Height (m)"] for x in first_extensions]
|
[x["Perimeter (m)"] * x["Room Height (m)"] for x in first_extensions if
|
||||||
|
x["Perimeter (m)"] and x["Room Height (m)"]]
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -887,6 +905,9 @@ def main():
|
||||||
how="left"
|
how="left"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if stonewater_data["Address ID"].duplicated().sum():
|
||||||
|
raise Exception("Duplicate Address IDs")
|
||||||
|
|
||||||
# Create a section for costs
|
# Create a section for costs
|
||||||
for measure in measure_columns:
|
for measure in measure_columns:
|
||||||
stonewater_data[f"Cost of {measure}"] = None
|
stonewater_data[f"Cost of {measure}"] = None
|
||||||
|
|
@ -933,5 +954,10 @@ def main():
|
||||||
windows_data["Address ID"] = windows_data["Address ID"].astype(float)
|
windows_data["Address ID"] = windows_data["Address ID"].astype(float)
|
||||||
stonewater_data = stonewater_data.merge(windows_data, on="Address ID", how="left")
|
stonewater_data = stonewater_data.merge(windows_data, on="Address ID", how="left")
|
||||||
|
|
||||||
|
if stonewater_data["Address ID"].duplicated().sum():
|
||||||
|
raise Exception("Duplicate Address IDs")
|
||||||
|
|
||||||
|
# stonewater_data[~pd.isnull(stonewater_data["Room in Roof"])]["survey_folder"].values
|
||||||
|
|
||||||
# if __name__ == "__main__":
|
# if __name__ == "__main__":
|
||||||
# main()
|
# main()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue