Tobi-ewl's picture
Initial push
0399906 verified
import os
import pandas as pd
import geopandas as gpd
import glob
def get_data_path():
# Ermittelt immer den absoluten Pfad zum "Data"-Ordner (relativ zum Projektroot)
return os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'data'))
def load_heatingsystem_csv(filename):
data_path = get_data_path()
csv_path = os.path.join(data_path, filename)
return pd.read_csv(csv_path, delimiter=';')
def load_scenario_table():
data_path = get_data_path()
csv_path = os.path.join(data_path, 'Szenario-Input.csv')
df = pd.read_csv(csv_path, delimiter=';', encoding='latin1', skip_blank_lines=True)
# Nur Zeilen, bei denen mindestens eine Szenario-Spalte belegt ist
scenario_cols = [col for col in df.columns if col.startswith("Szenario_")]
df = df.dropna(subset=scenario_cols, how="all")
return df
def load_data_from_parquet(parquet_dir, bbox_geom, columns):
parts = []
files = glob.glob(os.path.join(parquet_dir, "*.parquet"))
for f in files:
gdf = gpd.read_parquet(f, columns=columns)
# Filter nach Bounding Box!
gdf = gdf[gdf.geometry.intersects(bbox_geom)]
parts.append(gdf)
if parts:
return gpd.GeoDataFrame(pd.concat(parts, ignore_index=True), crs=parts[0].crs)
else:
return gpd.GeoDataFrame(columns=columns)
def load_data(_bbox_geom):
cols = [
"Fest_ID", "Strasse", "HAUSNR", "HAUSNR_Zusatz", "GEBAEUDETYP",
"NF", "RW_WW", "JAZ_Luft", "geometry"
]
parquet_dir = "LANUK_Daten"
return load_data_from_parquet(
parquet_dir=parquet_dir,
bbox_geom=_bbox_geom,
columns=cols
)
# def load_data(_bbox_geom):
# cols = [
# "Fest_ID", "beheizt", "Strasse", "HAUSNR", "HAUSNR_Zusatz", "GEBAEUDETYP", "sanierungsstand",
# "NF", "RW_WW", "JAZ_Luft", "San_Jahr", "San_Niveau", "San_Tiefe", "geometry"
# ]
# return gpd.read_file(
# "Warmebedarf_NRW.gdb",
# layer="Raumwaermebedarf_ist",
# engine="pyogrio",
# use_arrow=True,
# columns=cols,
# bbox=_bbox_geom
# )