@@ -394,13 +394,16 @@ def read_gpkg_potential_charging_parks_from_R4MU_data(
394394
395395 gpkg_files = [f for f in os .listdir (data_dir ) if f .endswith (".gpkg" )]
396396 gpkg_data = {f : gpd .read_file (os .path .join (data_dir , f )) for f in gpkg_files }
397-
398- charging_processes_gdf = charging_processes_from_R4MU_data (
399- edisgo_obj = edisgo_obj , gpkg_data = gpkg_data
400- )
401397 charging_parks_gdf = charging_parks_from_R4MU_data (
402398 gpkg_data = gpkg_data , edisgo_obj = edisgo_obj
403399 )
400+
401+ charging_processes_gdf = charging_processes_from_R4MU_data (
402+ edisgo_obj = edisgo_obj ,
403+ gpkg_data = gpkg_data ,
404+ charging_parks_gdf = charging_parks_gdf ,
405+ )
406+
404407 return charging_parks_gdf .to_crs (
405408 epsg = edisgo_obj .topology .grid_district ["srid" ]
406409 ), charging_processes_gdf .to_crs (epsg = edisgo_obj .topology .grid_district ["srid" ])
@@ -411,10 +414,7 @@ def get_grid_charging_capacity(edisgo_obj, charging_processes_gdf):
411414
412415
413416def get_park_end_timesteps (edisgo_obj , charging_processes_gdf ):
414- return (
415- charging_processes_gdf .park_start_timesteps
416- + charging_processes_gdf .park_time_timesteps
417- )
417+ return charging_processes_gdf .event_start + charging_processes_gdf .event_time
418418
419419
420420def assure_minimum_potential_charging_parks (
@@ -1246,6 +1246,7 @@ def import_electromobility_from_R4MU_data(
12461246 potential_charging_parks_gdf ,
12471247 )
12481248 integrate_charging_parks_from_R4MU_data (edisgo_obj )
1249+ print (edisgo_obj .electromobility .charging_processes_df )
12491250
12501251
12511252def integrate_charging_parks_from_R4MU_data (edisgo_obj : EDisGo ):
@@ -1265,7 +1266,7 @@ def integrate_charging_parks_from_R4MU_data(edisgo_obj: EDisGo):
12651266 designated_charging_parks = [
12661267 cp
12671268 for cp in charging_parks
1268- if (cp .designated_charging_point_capacity > 0 ) and cp .within_grid
1269+ # if (cp.designated_charging_point_capacity > 0) and cp.within_grid
12691270 ]
12701271
12711272 charging_park_ids = [_ .id for _ in designated_charging_parks ]
@@ -1279,9 +1280,13 @@ def integrate_charging_parks_from_R4MU_data(edisgo_obj: EDisGo):
12791280 geolocation = cp .geometry ,
12801281 sector = cp .use_case ,
12811282 add_ts = False ,
1282- p_set = cp .grid_connection_capacity ,
1283+ p_set = edisgo_obj .electromobility .potential_charging_parks_gdf .loc [
1284+ cp .id
1285+ ].p_nom
1286+ / 1000 ,
12831287 )
12841288 for cp in designated_charging_parks
1289+ if edisgo_obj .electromobility .potential_charging_parks_gdf .loc [cp .id ].p_nom > 0
12851290 ]
12861291
12871292 edisgo_obj .electromobility .integrated_charging_parks_df = pd .DataFrame (
@@ -1292,13 +1297,13 @@ def integrate_charging_parks_from_R4MU_data(edisgo_obj: EDisGo):
12921297
12931298 # delete all charging processes from list whith charging parks not in edisgo
12941299 # charging parks because they are outside the grid
1295- edisgo_obj .electromobility .charging_processes_df = (
1296- edisgo_obj .electromobility .charging_processes_df [
1297- edisgo_obj .electromobility .charging_processes_df .charging_park_id .isin (
1298- edisgo_obj .electromobility .integrated_charging_parks_df .index
1299- )
1300- ]
1301- )
1300+ # edisgo_obj.electromobility.charging_processes_df = (
1301+ # edisgo_obj.electromobility.charging_processes_df[
1302+ # edisgo_obj.electromobility.charging_processes_df.charging_park_id.isin(
1303+ # edisgo_obj.electromobility.integrated_charging_parks_df.index
1304+ # )
1305+ # ]
1306+ # )
13021307
13031308
13041309def charging_parks_from_R4MU_data (
@@ -1330,22 +1335,34 @@ def charging_parks_from_R4MU_data(
13301335 pd .concat (charging_parks_gdfs , ignore_index = True )
13311336 )
13321337 charging_parks_gdf .geometry = charging_parks_gdf .geometry .centroid
1338+ charging_parks_gdf = charging_parks_gdf .to_crs (
1339+ epsg = edisgo_obj .topology .grid_district ["srid" ]
1340+ )
1341+ charging_parks_gdf = charging_parks_gdf [
1342+ charging_parks_gdf .geometry .within (edisgo_obj .topology .grid_district ["geom" ])
1343+ ]
1344+ charging_parks_gdf = charging_parks_gdf .dropna (subset = ["location_id" ])
1345+ charging_parks_gdf = charging_parks_gdf [charging_parks_gdf ["charging_points" ] > 0 ]
13331346 mapping_charging_parks = {
13341347 "probability" : "user_centric_weight" ,
1335- "required_points " : "ags " ,
1348+ "average_charging_capacity " : "nominal_charging_capacity_kW " ,
13361349 "use_case" : "use_case" ,
13371350 "charging_park_id" : "id" ,
1351+ "location_id" : "charging_park_id" ,
13381352 }
13391353 charging_parks_gdf = charging_parks_gdf .rename (columns = mapping_charging_parks )
1340- charging_parks_gdf = charging_parks_gdf .to_crs (
1341- epsg = edisgo_obj .topology .grid_district ["srid" ]
1354+ charging_parks_gdf ["p_nom" ] = (
1355+ charging_parks_gdf ["charging_points" ]
1356+ * charging_parks_gdf ["nominal_charging_capacity_kW" ]
13421357 )
1343- return charging_parks_gdf .to_crs (epsg = edisgo_obj .topology .grid_district ["srid" ])
1358+ charging_parks_gdf = charging_parks_gdf .set_index ("charging_park_id" , drop = False )
1359+ return charging_parks_gdf
13441360
13451361
13461362def charging_processes_from_R4MU_data (
13471363 edisgo_obj : EDisGo ,
13481364 gpkg_data : dict [str , gpd .GeoDataFrame ],
1365+ charging_parks_gdf : gpd .GeoDataFrame ,
13491366):
13501367 """
13511368 Get charging processes from R4MU data.
@@ -1370,55 +1387,83 @@ def charging_processes_from_R4MU_data(
13701387 "energy" : "chargingdemand_kWh" ,
13711388 "use_case" : "use_case" ,
13721389 "id" : "car_id" ,
1373- "station_charging_capacity" : "nominal_charging_capacity_kW" ,
13741390 "charging_use_case" : "destination" ,
1375- "assigned_location " : "charging_park_id" ,
1391+ "location_id " : "charging_park_id" ,
13761392 "event_start" : "park_start_timesteps" ,
13771393 "event_time" : "park_time_timesteps" ,
13781394 }
13791395
1380- charging_processes_gdf = charging_processes_gdf .rename (columns = column_mapping )
1381- charging_processes_gdf ["charging_point_id" ] = (
1382- charging_processes_gdf .charging_park_id
1396+ charging_capacity = dict (
1397+ zip (
1398+ charging_parks_gdf .charging_park_id .dropna (),
1399+ charging_parks_gdf .nominal_charging_capacity_kW .dropna (),
1400+ )
1401+ )
1402+ charging_processes_gdf ["nominal_charging_capacity_kW" ] = charging_processes_gdf [
1403+ "location_id"
1404+ ]
1405+ charging_processes_gdf ["nominal_charging_capacity_kW" ] = (
1406+ charging_processes_gdf ["location_id" ].map (charging_capacity ).dropna ()
13831407 )
1408+ charging_processes_gdf ["charging_point_id" ] = charging_processes_gdf .location_id
13841409 charging_processes_gdf ["grid_charging_capacity_kW" ] = get_grid_charging_capacity (
13851410 edisgo_obj , charging_processes_gdf
13861411 )
13871412 charging_processes_gdf ["park_end_timesteps" ] = get_park_end_timesteps (
13881413 edisgo_obj , charging_processes_gdf
13891414 )
13901415 charging_processes_gdf = charging_processes_gdf .rename (columns = column_mapping )
1391- return charging_processes_gdf .to_crs (epsg = edisgo_obj .topology .grid_district ["srid" ])
1392-
1416+ use_case_mapping = {
1417+ 1 : "home" ,
1418+ 2 : "home" ,
1419+ 3 : "work" ,
1420+ 4 : "hpc" ,
1421+ 5 : "retail" ,
1422+ 6 : "street" ,
1423+ 7 : "depot" ,
1424+ }
13931425
1394- def distribute_charging_demand_from_R4MU_data (edisgo_obj : EDisGo , data_dir : str ):
1395- # Load all CSV files that end with "-events.csv"
1396- events_files = [f for f in os .listdir (data_dir ) if f .endswith ("-events.csv" )]
1397- if not events_files :
1398- raise FileNotFoundError (
1399- "No files ending with '-events.csv' found in the directory."
1400- )
1426+ charging_processes_gdf ["use_case" ] = (
1427+ charging_processes_gdf ["charging_park_id" ]
1428+ .astype (str )
1429+ .str [0 ]
1430+ .astype (int )
1431+ .map (use_case_mapping )
1432+ )
1433+ charging_processes_gdf = charging_processes_gdf .dropna (
1434+ subset = ["nominal_charging_capacity_kW" ]
1435+ )
1436+ return charging_processes_gdf .to_crs (epsg = edisgo_obj .topology .grid_district ["srid" ])
14011437
1402- # Process each events file and concatenate them into a single DataFrame
1403- events_dfs = []
1404- for events_file in events_files :
1405- events_df = pd .read_csv (os .path .join (data_dir , events_file ))
1406- # events_df = get_ags_from_geometry(events_df)
1407- column_mapping = {
1408- "energy" : "chargingdemand_kWh" ,
1409- "use_case" : "use_case" ,
1410- "id" : "car_id" ,
1411- "station_charging_capacity" : "nominal_charging_capacity_kW" ,
1412- "charging_use_case" : "destination" ,
1413- "assigned_location" : "charging_park_id" ,
1414- }
1415- events_df = events_df .rename (columns = column_mapping )
1416- events_df ["charging_point_id" ] = events_df .charging_park_id
1417- events_dfs .append (events_df )
14181438
1419- # Concatenate all DataFrames into one
1420- all_events_df = pd .concat (events_dfs , ignore_index = True )
1421- edisgo_obj .electromobility .charging_processes_df = all_events_df
1439+ # def distribute_charging_demand_from_R4MU_data(edisgo_obj: EDisGo, data_dir: str):
1440+ # # Load all CSV files that end with "-events.csv"
1441+ # events_files = [f for f in os.listdir(data_dir) if f.endswith("-events.csv")]
1442+ # if not events_files:
1443+ # raise FileNotFoundError(
1444+ # "No files ending with '-events.csv' found in the directory."
1445+ # )
1446+
1447+ # # Process each events file and concatenate them into a single DataFrame
1448+ # events_dfs = []
1449+ # for events_file in events_files:
1450+ # events_df = pd.read_csv(os.path.join(data_dir, events_file))
1451+ # # events_df = get_ags_from_geometry(events_df)
1452+ # column_mapping = {
1453+ # "energy": "chargingdemand_kWh",
1454+ # "use_case": "use_case",
1455+ # "id": "car_id",
1456+ # "station_charging_capacity": "nominal_charging_capacity_kW",
1457+ # "charging_use_case": "destination",
1458+ # "assigned_location": "charging_park_id",
1459+ # }
1460+ # events_df = events_df.rename(columns=column_mapping)
1461+ # events_df["charging_point_id"] = events_df.charging_park_id
1462+ # events_dfs.append(events_df)
1463+
1464+ # # Concatenate all DataFrames into one
1465+ # all_events_df = pd.concat(events_dfs, ignore_index=True)
1466+ # edisgo_obj.electromobility.charging_processes_df = all_events_df
14221467
14231468
14241469def import_electromobility_from_oedb (
0 commit comments