ISRO’s Bhuvan NTL portal provides pre-aggregated mean radiance for all Indian states from 2012 to 2024, and WMS raster tiles for any custom region, with no authentication required.
library(lightson)
df <- bhuvan_stats()
#> Warning: Your request spans a collection break in the Bhuvan NTL data:
#> 2012-2023 uses VNP46A4 Collection 1.0 and 2024 onwards uses Collection 2.0.
#> Radiance estimates are not directly comparable across this boundary. Treat any
#> 2023-to-2024 trend as an artefact of the collection change.
dim(df)
#> [1] 481 3
head(df)
#> state year mean_radiance
#> 1 Andaman & Nicobar 2012 2.28
#> 2 Andhra Pradesh 2012 12.05
#> 3 Arunachal Pradesh 2012 0.78
#> 4 Assam 2012 10.81
#> 5 Bihar 2012 8.36
#> 6 Chandigarh 2012 1100.69bihar <- bhuvan_stats(state = "BIHAR")
#> Warning: Your request spans a collection break in the Bhuvan NTL data:
#> 2012-2023 uses VNP46A4 Collection 1.0 and 2024 onwards uses Collection 2.0.
#> Radiance estimates are not directly comparable across this boundary. Treat any
#> 2023-to-2024 trend as an artefact of the collection change.
bihar
#> state year mean_radiance
#> 1 Bihar 2012 8.36
#> 2 Bihar 2013 9.12
#> 3 Bihar 2014 12.18
#> 4 Bihar 2015 16.45
#> 5 Bihar 2016 22.05
#> 6 Bihar 2017 24.64
#> 7 Bihar 2018 35.56
#> 8 Bihar 2019 41.00
#> 9 Bihar 2020 41.43
#> 10 Bihar 2021 47.97
#> 11 Bihar 2022 55.75
#> 12 Bihar 2023 60.59
#> 13 Bihar 2024 79.68library(ggplot2)
plot_ntl_trend(bihar,
region = "Bihar",
caption = "Source: ISRO Bhuvan NTL portal"
)Radiance nearly 10x from 2012 to 2024.
states <- c("Bihar", "Maharashtra", "Tamil Nadu", "Uttar Pradesh", "Kerala")
plot_ntl_trend(
df[df$state %in% states, ],
region = states,
subtitle = "Bhuvan state mean radiance (nW/cm^2/sr)",
caption = "Source: ISRO Bhuvan NTL portal"
)states_sf <- get_india_admin("state")
years_sel <- c(2012, 2015, 2018, 2021, 2024)
rasters <- tryCatch(
bhuvan_raster("IND", years = years_sel, bbox_pad = c(0, 0, 0, 3.5)),
error = function(e) list()
)
#> Warning: Your request spans a collection break in the Bhuvan NTL data:
#> 2012-2023 uses VNP46A4 Collection 1.0 and 2024 onwards uses Collection 2.0.
#> Radiance estimates are not directly comparable across this boundary. Treat any
#> 2023-to-2024 trend as an artefact of the collection change.
#> Using cached: bhuvan_v2_5a2264df7a53_2012.tif
#> Using cached: bhuvan_v2_5a2264df7a53_2015.tif
#> Using cached: bhuvan_v2_5a2264df7a53_2018.tif
#> Using cached: bhuvan_v2_5a2264df7a53_2021.tif
#> Using cached: bhuvan_v2_5a2264df7a53_2024.tifplot_ntl_panel(
rasters,
polygons = states_sf,
title = "India at night, 2012 to 2024",
subtitle = "Bhuvan NTL radiance classes. Boundaries: LGD/SoI.",
caption = "Source: ISRO Bhuvan NTL portal",
ncol = 3L
)All panels are drawn at the same radiance scale (reference zero). The sharpest gains are in Bihar, UP, and Odisha after 2015, broadly tracking the Saubhagya electrification scheme (2017-2019).
post_2015 <- bhuvan_stats(years = 2015:2024)
#> Warning: Your request spans a collection break in the Bhuvan NTL data:
#> 2012-2023 uses VNP46A4 Collection 1.0 and 2024 onwards uses Collection 2.0.
#> Radiance estimates are not directly comparable across this boundary. Treat any
#> 2023-to-2024 trend as an artefact of the collection change.
nrow(post_2015)
#> [1] 370