Skip to content

GADM — Global Administrative Areas

The most widely used academic boundary dataset — clean, consistent, and freely downloadable for research.


Provider
University of California, Davis
Website
Access Level
🟢 No Login Needed
Formats Available
Shapefile, GeoJSON, GeoPackage, R SpatialPolygons
Coverage
National → District (Level 0–3)
Version
GADM v4.1 (current)

What Is GADM?

GADM (Global Administrative Areas) is a database of the world's administrative boundaries. For India, it provides:

Level Admin Level Example
Level 0 Country India
Level 1 State / Union Territory Maharashtra, Goa, Delhi
Level 2 District Pune, Nashik, Nagpur
Level 3 Sub-district / Taluka Haveli, Mulshi

Why researchers love GADM: - Consistent geometry across all countries - Works perfectly for cross-country comparisons - Each boundary comes with an attribute table of names and codes - Peer-reviewed and widely cited in academic papers


How to Download

Direct Download from gadm.org 🟢

  1. Go to https://gadm.org/download_country.html
  2. Select Country: India
  3. Choose format:
  4. Shapefile — for QGIS or ArcGIS
  5. GeoJSON — for web development or Python
  6. GeoPackage — modern single-file format (recommended)
  7. Click the level you want (Level 0, 1, 2, or 3)
  8. Download immediately — no account needed

Using R (for R users) 🔵

# Install the geodata package
install.packages("geodata")
library(geodata)

# Download India districts (Level 2)
india_districts <- gadm("IND", level=2, path=tempdir())
plot(india_districts)

# Access attribute data
head(india_districts@data)

Using Python + geopandas 🔵

import geopandas as gpd

# If you've downloaded the GeoJSON:
india = gpd.read_file("gadm41_IND_2.json")

# View first few rows
print(india.head())
print(f"Number of districts: {len(india)}")

# Plot
india.plot(figsize=(12,10), edgecolor='black', facecolor='lightyellow')

Key Attribute Fields

Field Description Example
GID_0 Country ISO code IND
NAME_0 Country name India
GID_1 State code IND.16_1
NAME_1 State name Maharashtra
GID_2 District code IND.16.20_1
NAME_2 District name Pune
GID_3 Sub-district code IND.16.20.1_1
NAME_3 Sub-district name Haveli

Licence

Academic Use Only

GADM data is free for non-commercial academic use. For commercial use (building products, apps), you need permission or must use an alternative like OSM or official government data.


GADM vs OSM vs Official Boundaries

GADM OSM Official (Census/SOI)
Best for Research papers Web maps, routing Legal/official purposes
Village level ✅ (hard to get)
Always up-to-date Sometimes outdated Sometimes outdated
Free Academic use Varies
Easy to download Varies

✏️ Practice Exercise

Exercise 1.3 — Count Districts per State

Goal: Use GADM data to find which Indian state has the most districts.

import geopandas as gpd
import matplotlib.pyplot as plt

# Load GADM Level 2 (Districts)
india = gpd.read_file("gadm41_IND_2.json")

# Count districts per state
district_count = india.groupby('NAME_1')['NAME_2'].count().sort_values(ascending=False)

print("Top 10 states by number of districts:")
print(district_count.head(10))

# Plot bar chart
district_count.head(15).plot(kind='bar', figsize=(12,6), color='saddlebrown')
plt.title("Districts per State (Top 15)")
plt.xlabel("State")
plt.ylabel("Number of Districts")
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.savefig("districts_per_state.png", dpi=150)
plt.show()

Expected answer: Uttar Pradesh has the most districts (~75), followed by Madhya Pradesh (~55).


Next Dataset: Bhuvan Basemaps (ISRO) →