24.4. Impact on Industry and Commerce#
This notebook shows an analysis of the impact of the war on Gaza for industry and commerce. This is done using the following indicators as of April 15th, 2024:
Percentage of commercial and commercial buildings damaged.
Percentage of commercial and industrial buildings without electricity.
Percentage of places of economic activity damaged.
24.4.1. Impacts to Commerce and Industry#
def get_percentage_damaged(data, geog_level, variable, threshold, sort_order):
left = (data[data[variable]>=threshold].groupby(geog_level).size()).to_frame('damaged')
right = data.groupby(geog_level).size().to_frame('total')
df = pd.merge(left, right, left_index = True, right_index = True, how = 'left')
assert(not(df.isnull().values.any()))
df["perc"] = 100 * df["damaged"] / df["total"]
df = df.reindex(sort_order)
return df
sort_order = ["North Gaza", "Gaza", "Deir Al-Balah", "Khan Younis", "Rafah"]
variable = '_upd10mean'
threshold = 0.2
geog_level = 'ADM2_EN'
def hbarplot(data, suptitle, abs_value, perc_value, xlabel, ylabel, title, text):
'''Create a horizontal bar plot'''
fig, ax = plt.subplots(figsize=(12, 6))
plt.suptitle(suptitle, y=0.99, fontsize=20, x=0.54)
absolute_damage_numbers = data[abs_value].values
ax = data[perc_value].plot(ax=ax, kind="barh", legend=False)
ax.invert_yaxis()
# Add labels and customization
ax.set_xlabel(xlabel, fontsize=12)
ax.set_ylabel(ylabel, fontsize=16)
ax.spines["right"].set_visible(False)
ax.spines["top"].set_visible(False)
# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position("left")
ax.xaxis.set_ticks_position("bottom")
ax.xaxis.set_major_formatter(FuncFormatter(lambda y, _: "{:.0f}%".format(y)))
ax.grid(axis="x", linestyle="--", linewidth=0.25, color="gray", alpha=0.5)
ax.set_title(title, fontsize=14, loc="left")
ax.text(0, -0.2, text, ha="left", va="center", transform=ax.transAxes, fontsize=10, color="black", weight="normal")
for id, bar in enumerate(ax.patches):
width = bar.get_width() # Use width since the bars are horizontal
ax.annotate(
f"{int(np.round(absolute_damage_numbers[id],0))}",
xy=(width, bar.get_y() + bar.get_height() / 2),
xytext=(-20, 0), # Shift the text to the left of the bar's end
textcoords="offset points",
color="white",
ha="right",
va="center",
)
hbarplot(industry,
"Gaza: Percentage of Damaged Industrial Buildings as of April 15th 2024",
'damaged',
'perc',
"% Industrial Buildings Damaged",
"Governorate",
"Estimated percentage (and absolute numbers) of damaged industrial buildings in each Governorate",
"On X: Percentage of industrial buildings damaged. Inside Bar: Absolute number of industrial buildings damaged On Y: Governorate from North to South.\nIndustrial buildings consist of buildings tagged 'industrial', 'construction'\nSource: World Bank calculations derived from OpenStreetMap and Sentinel-1 data."
)
hbarplot(commerce,
"Gaza: Percentage of Damaged Commercial Buildings as of April 15th 2024",
'damaged',
'perc',
"% Commercial Buildings Damaged",
"Governorate",
"Estimated percentage (and absolute numbers) of damaged commercial buildings in each Governorate",
"On X: Percentage of commercial buildings damaged. Inside Bar: Absolute number of commercial buildings damaged On Y: Governorate from North to South.\nCommercial buildings consist of buildings tagged 'commercial', 'retail', 'hotel', 'service'\nSource: World Bank calculations derived from OpenStreetMap and Sentinel-1 data."
)
24.4.1.1. Observations and Limitations#
The number of buildings tagged as industrial and commercial on the OpenStreetMap database are few, this could explain the high percentage of damage seen in the North Gaza Governorate.
24.4.2. Percentage of Points of Interest Damaged#
economy = get_percentage_damaged(POI[POI["type"] == "Places of Economic Activity"],
'ADM2_EN', '_upd10max', 0.5, sort_order)
critical_infrastructure = get_percentage_damaged(POI[POI["type"] == "Critical Infrastructure"],
'ADM2_EN', '_upd10max', 0.5, sort_order)
hbarplot(economy,
"Gaza: Percentage of Places of Economic Activity Damaged as of April 15th 2024",
'damaged',
'perc',
"% Places of Economic Activity Damaged",
"Governorate",
"Estimated percentage (and absolute numbers) of Places of Economic Activity damaged in each Governorate",
"On X: Percentage of Places of Economic Activity damaged. Inside Bar: Absolute number of Places of Economic Activity damaged On Y: Governorate from North to South. \nSource: World Bank calculations derived from OpenStreetMap and Sentinel-1 data."
)
hbarplot(critical_infrastructure,
"Gaza: Percentage of Critical Infrastructure Damaged as of April 15th 2024",
'damaged',
'perc',
"% Critical Infrastructure Damaged",
"Governorate",
"Estimated percentage (and absolute numbers) of critical infrastructure damaged in each Governorate",
"On X: Percentage of Critical Infrastructure damaged. Inside Bar: Absolute number of Critical Infrastructure damaged On Y: Governorate from North to South. \nSource: World Bank calculations derived from OpenStreetMap and Sentinel-1 data."
)
24.4.3. Impact to Roads#
ROADS = geopandas.read_file("../../../data/damaged_roads/damaged_roads_lines_10Apr2024_2_5sigma.shp").to_crs("EPSG:4326")
ROADS = geopandas.sjoin(ROADS, GAZA)
mapper = {
"track": "Tracks",
"unclassified": "Unclassified",
"residential": "Other",
"tertiary": "Tertiary",
"service": "Other",
"secondary": "Secondary",
"track_grade3": "Tracks",
"track_grade5": "Tracks",
"trunk": "Other",
"path": "Other",
"track_grade4": "Tracks",
"primary": "Primary",
"secondary_link": "Secondary",
"footway": "Other",
"steps": "Other",
"tertiary_link": "Tertiary",
"trunk_link": "Other",
"pedestrian": "Other",
"primary_link": "Primary",
"living_street": "Other",
"unknown": "Unclassified",
"track_grade1": "Tracks",
}
ROADS["type"] = ROADS["fclass"].replace(mapper)
primary_secondary_roads = get_percentage_damaged(ROADS[ROADS["type"].isin(["Primary", "Secondary"])],
'ADM2_EN', '_upd10max', 0.5, sort_order)
hbarplot(primary_secondary_roads,
"Gaza: Percentage of Primary and Secondary Damaged Roads as of April 15th 2024",
'damaged',
'perc',
"% Primary and Secondary Damaged Roads",
"Governorate",
"Estimated percentage (and absolute numbers) of primary and secondary damaged rodas in each Governorate",
"On X: Percentage of primary and secondary damaged roads. Inside Bar: Km of primary and secondary damaged roads On Y: Governorate from North to South. \nSource: World Bank calculations derived from OpenStreetMap and Sentinel-1 data."
)
24.4.4. Overall Impact on Industry and Commerce#
summary_stats = pd.concat([
industry,
commerce,
economy,
critical_infrastructure,
primary_secondary_roads
], axis = 1
)
summary_stats.index.name = 'Governorate'
summary_stats[
[
"% Industrial Buildings Damaged",
"% Commercial Buildings Damaged",
"% Places of Economic Activity Damaged",
"% Critical Infrastructure Damaged",
'% Primary and Secondary Roads Damaged'
]
].style.background_gradient(cmap="viridis", axis=0).format("{:.0f}%")
| % Industrial Buildings Damaged | % Commercial Buildings Damaged | % Places of Economic Activity Damaged | % Critical Infrastructure Damaged | % Primary and Secondary Roads Damaged | |
|---|---|---|---|---|---|
| Governorate | |||||
| North Gaza | 59% | 50% | 68% | 45% | 60% |
| Gaza | 60% | 67% | 75% | 73% | 63% |
| Deir Al-Balah | 44% | 67% | 36% | 60% | 19% |
| Khan Younis | 28% | 33% | 48% | 49% | 37% |
| Rafah | 44% | 30% | 64% | 64% | 40% |
24.4.5. Observations#
The Governorate of Gaza has seen the highest impact for industry and commerce.
North Gaza has the second highest amount of roads damaged, both in absolute figures and percentage values.