| DMSP-OLS | VIIRS DNB |
|---|---|
| Reflectance (Ratio of radiance) | Radiance |
| Ratio (DN) | Absolute Value (DNB) |
| 1000m resolution | 750 m resolution |
| Cloud & Light Noise Adjusted | Non adjusted raw values |
| 6 bit quantization [0 - 63 (2^6)] | 13/14 bit [range:0 - 8192+ (2^13)] |
Running DMSP series on nightlights from 1992-2013 has limitations, such as low spatial resolution (2.7 km ground sample distance), low radiometric resolution (six bit), a saturation effect in bright regions, lack of on-board calibration, lack of systematic recording of in-flight gain changes and lack of multiple spectral bands for discriminating lighting types lack of spectral channels suitable for discrimination of thermal sources of lighting and lack of low light imaging spectral bands suitable for discriminating lighting types. http://www.star.nesdis.noaa.gov/smcd/spb/nsun/snpp/VIIRS/VIIRS_SDR_Users_guide.pdf.
VIIRS offers a substantial number of improvements over the OLS in terms of spatial resolution, dynamic range, quantization, calibrations and the availability of spectral bands suitable for discrimination of thermal sources of light emissions.
More times than often when any satellite imagery data (DMSP or VIIRS) is clipped for India, there is a possibility of associated noise. Also clipped data’s NA value are wrongly taken as 0 radiance/reflectance. Tile clipping to the specified geography helps in resolving this.
The Albers equal-area conic projection two standard parallels. The scale and shape are not preserved, distortion is minimal between the standard parallels. Albers prjection application helps in defining uniform pixel geometry before implementing resampling
# Albers Projection
# ---------------------
aea <- '+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0
+y_0=0 +datum=NAD83'
#ra <- projectRaster(vr14, crs=aea)
# Resultant GRID
# ---------------------
m <- map(database= "world", regions = "India", plot=F)
map(database= "world", regions = "India", project="albers", par=c(39, 45))
map.grid(m)
https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/OverviewCoordinateReferenceSystems.pdf
The following chunk converts the image pixel from 750m to 1 sq km, by creating an empty raster grid of specified geometry and then imposing night lights data onto it
ras <- raster("C:/Parth/Personal/Data Mining/GoI DEA/Data/Raw/Night Lights/VIIRS/India 14-15/SVDNB_20140301-20140331.avg_rade9_India.tif")
# Extent Computations
# ---------------------
x_min <- extent(ras)[1]
x_max <- extent(ras)[2]
y_min <- extent(ras)[3]
y_max <- extent(ras)[4]
cell_res <- 0.008333333 # 10 km GRID
cell_res <- 0.0008333333 # 10 km GRID
# Number of Columns & Rows : Computations
# ---------------------
x_extent <-as.integer((x_max-x_min)/cell_res)
x_extent.1 <- (((x_max-x_min)/cell_res)-as.integer((x_max-x_min)/cell_res)) #Long
y_extent <- as.integer((y_max-y_min)/cell_res)
y_extent.1 <- (((y_max-y_min)/cell_res)-as.integer((y_max-y_min)/cell_res)) #Lat
n_row <- ifelse(y_extent.1>0.5,(y_extent+2),(y_extent+1)) #lat
n_col <- ifelse(x_extent.1>0.5,(x_extent+2),(x_extent+1)) #long
# Empty Raster
# ---------------------
ras1 <- raster(nrow=n_row,ncol=n_col)
extent(ras1) <- extent(ras)
# Resampling from 750m to 10km
#ras2 <- resample(ras,ras1,method='bilinear')
#extent(ras2) <- extent(ras)
#writeRaster(ras2,filename = "Mar2014.tif",format="GTiff",overwrite=TRUE)
Unfortunately there is no deinfed package in R for bit transformation. The results for the same will be shared in here shortly