-
Notifications
You must be signed in to change notification settings - Fork 3
/
PrepareHydrogenHubs.py
137 lines (107 loc) · 4.28 KB
/
PrepareHydrogenHubs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Jun 28 13:56:00 2023
@author: danikam
"""
# Import needed modules
import pandas as pd
import geopandas as gpd
from CommonTools import get_top_dir, saveShapefile
def prepare_electrolyzer_hubs(top_dir):
"""
Reads in the csv file containing the locations, and capacities (kW) of proposed and installed electrolyzers and returns a geodataframe for the associated shapefile
Parameters
----------
top_dir (string): Path to the top level directory of the repository
Returns
-------
df_geodata (pd.DataFrame): Geodataframe containing the electrolyzer capacities and geospatial data
"""
df_data = pd.read_csv(f"{top_dir}/data/hydrogen_hubs/electrolyzers.csv")
df_geodata = gpd.GeoDataFrame(
df_data,
geometry=gpd.points_from_xy(df_data.Longitude, df_data.Latitude),
crs="EPSG:4326",
)
df_geodata = df_geodata.filter(
["Location", "Power (kW)", "Status", "geometry"], axis=1
).rename(columns={"Power (kW)": "Power_kW"})
# Remove whitespaces from all status names
df_geodata["Status"] = df_geodata["Status"].str.strip()
# Simplify the status names
df_geodata.loc[(df_geodata.Status == "Planned"), "Status"] = (
"Planned or Under Construction"
)
df_geodata.loc[(df_geodata.Status == "Planned/Under Construction"), "Status"] = (
"Planned or Under Construction"
)
df_geodata.loc[(df_geodata.Status == "Planned/Under Construction"), "Status"] = (
"Planned or Under Construction"
)
df_geodata.loc[(df_geodata.Status == "Installed/Commissioning"), "Status"] = (
"Installed"
)
df_geodata.loc[(df_geodata.Status == "Installed/Operational"), "Status"] = (
"Operational"
)
df_geodata_planned = df_geodata[
df_geodata["Status"] == "Planned or Under Construction"
]
df_geodata_installed = df_geodata[df_geodata["Status"] == "Installed"]
df_geodata_operational = df_geodata[df_geodata["Status"] == "Operational"]
return df_geodata_planned, df_geodata_installed, df_geodata_operational
def prepare_refinery_hubs(top_dir):
"""
Reads in the csv file containing the locations, and capacities (million standard cubic feet per day) of existing refineries that produce hydrogen as byproducts or via SMR and returns a geodataframe for the associated shapefile
Parameters
----------
top_dir (string): Path to the top level directory of the repository
Returns
-------
df_geodata (pd.DataFrame): Geodataframe containing the hydrogen production capacities and geospatial data of the refineries
"""
df_data = pd.read_csv(
f"{top_dir}/data/hydrogen_hubs/Hydrogen_Production_Facilities_Capacity.csv"
)
df_geodata = gpd.GeoDataFrame(
df_data,
geometry=gpd.points_from_xy(df_data.Longitude, df_data.Latitude),
crs="EPSG:4326",
)
df_geodata = df_geodata.filter(
[
"City",
"State",
"Capacity (million standard cubic feet per day)",
"Process",
"geometry",
],
axis=1,
).rename(columns={"Capacity (million standard cubic feet per day)": "Cap_MMSCFD"})
# Remove the locations that haven't been assigned longitude/latitude coordinates
df_geodata = df_geodata.dropna(subset=["Cap_MMSCFD"])
return df_geodata
def main():
# Get the path to the top level of the Git repo
top_dir = get_top_dir()
# Populate the dictionary with the refinery and electrolyzer hubs
df_electrolyzer_planned, df_electrolyzer_installed, df_electrolyzer_operational = (
prepare_electrolyzer_hubs(top_dir)
)
df_refinery = prepare_refinery_hubs(top_dir)
# Save the shapefile for the electrolyzer hubs
saveShapefile(
df_electrolyzer_planned,
f"{top_dir}/data/hydrogen_hubs/shapefiles/electrolyzer_planned_under_construction.shp",
)
saveShapefile(
df_electrolyzer_installed,
f"{top_dir}/data/hydrogen_hubs/shapefiles/electrolyzer_installed.shp",
)
saveShapefile(
df_electrolyzer_operational,
f"{top_dir}/data/hydrogen_hubs/shapefiles/electrolyzer_operational.shp",
)
saveShapefile(df_refinery, f"{top_dir}/data/hydrogen_hubs/shapefiles/refinery.shp")
main()