Bhuvan OGC Services — WMS / WFS / WMTS¶
Add India's national GIS layers directly to QGIS or your web app — no download needed.
Provider
NRSC / ISRO
Base URL
https://bhuvan-vec1.nrsc.gov.in/bhuvan/wmsAccess Level
🟢 No Login for WMS | 🟡 Login for WFS Downloads
Standards
WMS 1.1.1, WFS 2.0, WMTS
Coverage
All India — Administrative, Thematic layers
License
Free for non-commercial use
Available Bhuvan WMS Endpoints¶
| Endpoint | URL | What It Has |
|---|---|---|
| Vector Layer 1 | https://bhuvan-vec1.nrsc.gov.in/bhuvan/wms |
Districts, states, roads, rivers |
| Vector Layer 2 | https://bhuvan-vec2.nrsc.gov.in/bhuvan/wms |
Villages, blocks, talukas |
| Satellite Imagery | https://bhuvan-ras1.nrsc.gov.in/bhuvan/wms |
LISS-III, Cartosat imagery tiles |
| Thematic Maps | https://bhuvan-app1.nrsc.gov.in/bhuvan/wms |
LULC, Forest, Soil |
GetCapabilities (to discover all layers):
Open this URL in your browser to see the full list of available layers in XML format.Key Layer Names¶
| Layer Name | Description |
|---|---|
india:INDIA_STATE |
State boundaries |
india:INDIA_DISTRICT |
District boundaries |
india:INDIA_SUBDISTRICT |
Sub-district / Tehsil |
india:INDIA_VILLAGE |
Village boundaries |
india:INDIA_ROADS_NH |
National Highways |
india:INDIA_RIVER_MAJOR |
Major rivers |
india:INDIA_RAILROADS |
Railway lines |
india:INDIA_URBAN |
Urban agglomeration boundaries |
How to Add Bhuvan WMS to QGIS¶
- Open QGIS → Layer menu → Add Layer → Add WMS/WMTS Layer...
- Click "New" to create a connection
- Fill in:
- Name:
Bhuvan Vector 1 - URL:
https://bhuvan-vec1.nrsc.gov.in/bhuvan/wms - Click "OK" → Click "Connect"
- Browse the layer list → Select
india:INDIA_DISTRICT - Click "Add" → Close
- The district boundaries appear on your map canvas!
Python: Query WFS and Save as Shapefile¶
from owslib.wfs import WebFeatureService
import geopandas as gpd
from io import BytesIO
import requests
# Connect to Bhuvan WFS
WFS_URL = "https://bhuvan-vec1.nrsc.gov.in/bhuvan/wfs"
wfs = WebFeatureService(WFS_URL, version='1.1.0')
# List all available layers
print("Available WFS layers:")
for layer in list(wfs.contents)[:10]:
print(f" - {layer}")
# Download all India districts as GeoJSON
response = wfs.getfeature(
typename='india:INDIA_DISTRICT',
outputFormat='application/json'
)
gdf = gpd.read_file(BytesIO(response.read()))
print(f"\nDownloaded {len(gdf)} district features")
print(f"Columns: {list(gdf.columns)}")
print(gdf.head())
# Save as shapefile
gdf.to_file("bhuvan_india_districts.shp")
print("\nSaved to bhuvan_india_districts.shp")
✏️ Practice Exercise¶
Exercise 6.1 — Load 3 Bhuvan Layers in QGIS
Goal: Build a base map of your state using Bhuvan WMS layers.
- Add Bhuvan WMS connection (steps above)
- Add three layers:
india:INDIA_DISTRICT— styled with hollow fill, dark borderindia:INDIA_RIVER_MAJOR— styled in blueindia:INDIA_ROADS_NH— styled in red- Filter districts to your state using Layer Properties → Source → Query Builder:
-
Make a print layout with title, legend, and north arrow
-
How many districts does your state have?
- How many national highways pass through your state?
Next: GEE Python API →