using CSV using Rasters using NighttimeLights using Plots using DataFrames using Dates donut = CSV.read("/home/megha.patnaik/CIAMBELLE/OUTPUT/donut_US.csv", DataFrame) rename!(donut,:Column1 => :city_index) donut.coord = string.(donut.cbd_lat, ",", donut.cbd_lon) donut_centre = donut donut_ring = donut ### MONTHLY radiance_path = "/home/megha.patnaik/NL_DATA_MONTHLY/TILE1/rad/" cfobs_path = "/home/megha.patnaik/NL_DATA_MONTHLY/TILE1/cf/" rad_list = readdir(radiance_path) cf_list = readdir(cfobs_path) dates = range(start = Date(2018,1), step = Month(1), length = length(rad_list)) |> collect timestamps = NighttimeLights.yearmon.(dates) function agg_radiance(lat, long, R = 10, res = 15) raster1 = Raster(radiance_path .* rad_list[1]) bounds, m = annular_ring(raster1, R, lat, long, res) radiances = [Raster(i, lazy = true)[bounds...] for i in radiance_path .* rad_list] series = RasterSeries(radiances, Ti(timestamps)) radiance_datacube = Rasters.combine(series, Ti) cfobs = [Raster(i, lazy = true)[bounds...] for i in cfobs_path .* cf_list] series = RasterSeries(cfobs, Ti(timestamps)) cfobs_datacube = Rasters.combine(series, Ti) cleaned = clean_complete(radiance_datacube, cfobs_datacube) return [sum(skipmissing(cleaned[:,:,1,i] .* m)) for i in 1:length(cf_list)] end # 2 KM CIRCLE AROUND CENTRE aggs = [] for i in donut.city_index lat = donut.cbd_lat[i] long = donut.cbd_lon[i] push!(aggs, agg_radiance(lat, long, 2)) end agg_matrix = cat(aggs..., dims = 2)' agg_df = DataFrame(Array(agg_matrix), :auto) rename!(agg_df, Symbol.(dates)) agg_df.coord = donut.coord donut_centre = leftjoin(donut_centre, agg_df, on = :coord) CSV.write("/home/megha.patnaik/CIAMBELLE/OUTPUT/centre_radiance_2km.csv", donut_centre) # 2-50 KM RING AROUND THAT aggs = [] for i in donut.city_index lat = donut.cbd_lat[i] long = donut.cbd_lon[i] push!(aggs, agg_radiance(lat, long, 2,50)) end agg_matrix = cat(aggs..., dims = 2)' agg_df = DataFrame(Array(agg_matrix), :auto) rename!(agg_df, Symbol.(dates)) agg_df.coord = donut.coord donut_ring = leftjoin(donut_ring, agg_df, on = :coord) CSV.write("/home/megha.patnaik/CIAMBELLE/OUTPUT/ring_radiance_2-50km.csv", donut_ring)