India’s Data-Center Boom Has a Water-Risk Question
AI infrastructure is often discussed as an electricity problem.
But in India, it is also becoming a water-risk and site-suitability problem.
As cloud, AI, hyperscale computing, and edge infrastructure expand, the question is no longer only:
Where is land available?
Where is power available?
Where is fiber connectivity strong?
The better planning question is:
Where can digital infrastructure grow without worsening long-term pressure on water, land, energy, and local communities?
That question led me to build a bivariate map of India’s data-center markets and baseline water stress.
Why I mapped this
India’s data-center sector is growing rapidly. Mumbai, Chennai, Hyderabad, Bengaluru, Noida, Pune, New Delhi and other urban markets are becoming important digital infrastructure clusters.
But many of these regions are also exposed to seasonal water stress, groundwater pressure, heat risk, reservoir dependence, or competing urban demand.
WRI India has already highlighted that more than half of India’s data centers are in water-stressed regions.
CEEW’s work on India’s data-center infrastructure also frames water availability as a critical siting issue, especially where cooling demand, climate risk, and urban water demand intersect.
So I wanted to create a map that does not just show data-center locations.
I wanted to show the spatial overlap between:
- data-center market pressure, and
- baseline water stress.
The core idea: a bivariate map
A bivariate map combines two variables into one color surface.
In this case:
- One axis = WRI Aqueduct baseline water stress
- Second axis = data-center pressure
The darkest / most critical cells represent places where both are high:
high water stress + high data-center pressure
This is not a claim of direct causation.
The map does not say data centers caused water shortages.
It asks a planning question:
Are India’s future AI and cloud infrastructure investments clustering in regions where water availability should already be treated as a constraint?
Data used
1. Water stress
I used WRI Aqueduct 4.0 baseline annual water stress.
Source:
https://www.wri.org/data/aqueduct-global-maps-40-data
Aqueduct is useful because it translates hydrological complexity into water-risk indicators that can be used for screening and prioritization.
Important caveat: Aqueduct should be treated as a prioritization layer, not a final local hydrological assessment.
2. Data-center markets
I used DataCenterMap India market-level counts.
Source:
https://www.datacentermap.com/india/
This is not the same as facility-level coordinates or installed MW capacity.
For this map, I treated each city/market as a proxy point and used the listed count as a pressure indicator.
A publication-grade version should replace this with:
- verified facility coordinates,
- installed IT capacity in MW,
- cooling technology,
- water source,
- power source,
- permits,
- and local water availability data.
3. India data-center and water-risk context
WRI India data visualization:
https://wri-india.org/data/more-half-indias-data-centres-are-water-stressed-regions
CEEW report:
https://www.ceew.in/publications/how-is-data-centre-infrastructure-in-india-shaping-power-and-water-use
Mumbai water-shortage context:
https://www.reuters.com/business/environment/indias-mumbai-rations-water-supply-june-rainfall-hits-12-year-low-2026-06-17/
Get Abhishek Rawat’s stories in your inbox
Join Medium for free to get updates from this writer.
My visualization map/plot:
Method overview
The workflow was simple:
- Download WRI Aqueduct 4.0 water-risk polygons.
- Clip/filter them to India.
- Prepare a city-level data-center market file.
- Convert data-center count into a pressure surface using distance decay.
- Bin water stress into low / medium / high.
- Bin data-center pressure into low / medium / high.
- Combine the two bins into a 3×3 bivariate color matrix.
- Overlay market points as glowing bubbles.
- Add a Mumbai/Navi Mumbai inset as a seasonal live-water alert.
Code snippet 1: install and import
!pip install geopandas contextily mapclassify shapely pyproj -q
import geopandas as gpd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pathlib import PathCode snippet 2: load water-risk and data-centre data
# WRI Aqueduct polygons
water = gpd.read_file("/content/data/aqueduct-4-0-water-risk-data.zip")
# Market-level data-centre counts
dcs = pd.read_csv("/content/data/data_center_markets_india_seed.csv")
# Convert data-centre table to GeoDataFrame
dcs_gdf = gpd.GeoDataFrame(
dcs,
geometry=gpd.points_from_xy(dcs["lon"], dcs["lat"]),
crs="EPSG:4326"
)Your data-center CSV can be as simple as:
city,lat,lon,dc_count
Mumbai,19.0760,72.8777,54
Navi Mumbai,19.0330,73.0297,25
Hyderabad,17.3850,78.4867,36
Chennai,13.0827,80.2707,33
Bangalore,12.9716,77.5946,31
Noida,28.5355,77.3910,19
Pune,18.5204,73.8567,16
New Delhi,28.6139,77.2090,12
Ahmedabad,23.0225,72.5714,11
Kolkata,22.5726,88.3639,8Code snippet 3: create water-stress bins
The exact column name depends on the Aqueduct file. In my case, I used the baseline water-stress score column.
WATER_COL = "bws_score" # change this if your Aqueduct column has a different name
water["water_bin"] = pd.cut(
water[WATER_COL],
bins=[-0.01, 1.0, 3.0, 5.0],
labels=[0, 1, 2]
)
# Handle No Data / Arid classes separately if present
if "bws_label" in water.columns:
invalid = (
water["bws_label"].astype(str).str.contains("No Data", case=False, na=False)
| water["bws_label"].astype(str).str.contains("Arid", case=False, na=False)
)
water.loc[invalid, "water_bin"] = pd.NAopCode snippet 4: create a simple data-centre pressure score
This creates a distance-decayed score around each listed market.
# Use projected CRS for distance calculation
water_3857 = water.to_crs("EPSG:3857")
dcs_3857 = dcs_gdf.to_crs("EPSG:3857")
centroids = water_3857.geometry.centroid
DECAY_KM = 150
MAX_INFLUENCE_KM = 350
pressure_scores = []
for geom in centroids:pyth
total = 0
for _, dc in dcs_3857.iterrows():
dist_km = geom.distance(dc.geometry) / 1000
if dist_km <= MAX_INFLUENCE_KM:
total += dc["dc_count"] * np.exp(-dist_km / DECAY_KM)
pressure_scores.append(total)
water_3857["dc_pressure"] = pressure_scores
water_3857["dc_bin"] = pd.qcut(
water_3857["dc_pressure"],
q=3,
labels=[0, 1, 2],
duplicates="drop"
)Code snippet 5: bivariate color matrix
bivar_palette = {
(0, 0): "#dfe8e6", # low water stress, low DC pressure
(0, 1): "#b8d5d1",
(0, 2): "#5bb8c9",
(1, 0): "#f0d29a",
(1, 1): "#c9aaa1",
(1, 2): "#8398ad",
(2, 0): "#f07f36", # high water stress, low DC pressure
(2, 1): "#b95b61",
(2, 2): "#64233d", # high water stress, high DC pressure
}
water_3857["bivar_key"] = list(zip(
water_3857["water_bin"].astype("Int64"),
water_3857["dc_bin"].astype("Int64")
))
water_3857["bivar_color"] = water_3857["bivar_key"].map(bivar_palette)
# Neutral colour for invalid/no-data areas
water_3857["bivar_color"] = water_3857["bivar_color"].fillna("#2A3138")Code snippet 6: plot the map
import contextily as cx
fig, ax = plt.subplots(figsize=(16, 9), dpi=300)
fig.patch.set_facecolor("#05080D")
ax.set_facecolor("#05080D")
# Basemap
cx.add_basemap(
ax,
source=cx.providers.Esri.OceanBasemap,
crs="EPSG:3857",
zoom=5,
alpha=0.95
)
cx.add_basemap(
ax,
source=cx.providers.Esri.WorldShadedRelief,
crs="EPSG:3857",
zoom=5,
alpha=0.35
)
# Bivariate layer
water_3857.plot(
ax=ax,
color=water_3857["bivar_color"],
edgecolor="#14222B",
linewidth=0.08,
alpha=0.78
)
# Data-centre points
for scale, alpha in [(35, 0.06), (18, 0.12), (8, 0.22)]:
ax.scatter(
dcs_3857.geometry.x,
dcs_3857.geometry.y,
s=dcs_3857["dc_count"] * scale + 100,
color="#81FF75",
alpha=alpha,
linewidth=0
)
ax.scatter(
dcs_3857.geometry.x,
dcs_3857.geometry.y,
s=dcs_3857["dc_count"] * 5.5 + 30,
color="#81FF75",
edgecolor="#EFFFF0",
linewidth=0.45,
alpha=0.96
)
ax.axis("off")
plt.savefig(
"/content/outputs/india_data_centres_water_stress_map.png",
dpi=300,
facecolor=fig.get_facecolor(),
bbox_inches="tight"
)
plt.show()What the map shows
The output highlights several patterns.
Mumbai is the largest listed data-center market in this dataset. Hyderabad, Chennai, Bengaluru, Navi Mumbai, Noida, Pune, New Delhi and Ahmedabad also emerge as major markets.
But several of these markets overlap with high or extremely high baseline water-stress categories.
That does not mean all of them face the same operational water risk.
It means that water availability should be treated as a screening layer early in site selection, alongside power, fiber, land, flood risk, heat stress, cooling technology and regulatory constraints.
Mumbai needs a separate note
Mumbai/Navi Mumbai is a good example of why a single water-stress layer is not enough.
In the Aqueduct baseline layer, Mumbai does not appear in the same way as some inland high-stress regions. But the city can still face live reservoir stress, seasonal shortages and urban supply constraints.
So I treated the Mumbai water shortage context as a separate live-water alert layer.
This is important because baseline water stress and live reservoir storage are not the same thing.
Useful YouTube learning links
If you want to recreate or improve this analysis, these YouTube searches are useful starting points:
WRI Aqueduct / Water Risk Atlas tutorial
https://www.youtube.com/results?search_query=WRI+Aqueduct+Water+Risk+Atlas+tutorial
Bivariate choropleth maps
https://www.youtube.com/results?search_query=bivariate+choropleth+map+tutorial
GeoPandas mapping tutorial
https://www.youtube.com/results?search_query=geopandas+choropleth+map+tutorial
Contextily basemap tutorial
https://www.youtube.com/results?search_query=contextily+geopandas+basemap+tutorial
Data centres and water consumption explained
https://www.youtube.com/results?search_query=data+centres+water+consumption+AI+explained
Reports and references
WRI Aqueduct 4.0
https://www.wri.org/data/aqueduct-global-maps-40-data
WRI India: More Than Half of India’s Data Centres Are in Water-Stressed Regions
https://wri-india.org/data/more-half-indias-data-centres-are-water-stressed-regions
CEEW: How Is Data Centre Infrastructure in India Shaping Power and Water Use?
https://www.ceew.in/publications/how-is-data-centre-infrastructure-in-india-shaping-power-and-water-use
DataCenterMap India
https://www.datacentermap.com/india/
Reuters: Mumbai rations water supply as June rainfall hits 12-year low
https://www.reuters.com/business/environment/indias-mumbai-rations-water-supply-june-rainfall-hits-12-year-low-2026-06-17/
Contextily documentation
https://contextily.readthedocs.io/
GeoPandas documentation
https://geopandas.org/
Final output
Below is the final map output.
WRI Aqueduct baseline water stress × listed data-center market pressure
Closing thought
India’s AI infrastructure future should not be planned only through the lens of land banks, power tariffs and fiber corridors.
It needs a more integrated site-suitability framework.
A good data-center site should be:
power-secure,
water-aware,
climate-resilient,
locally defensible,
and socially responsible.
That is the real map we need to build next.






