How to make a density map (per square km per year)

2 views (last 30 days)
I have a .mat file where the 7th (latitude) and 8th (longitudes) columns are the lightning stroke counts. How to make a density map ( Lightning Strokes / square km/ day) using Matlab R2017a?

Answers (1)

AKennedy
AKennedy on 2 Jan 2025
You can modify this code and try it to get a density map.
% Load the .mat file
data = load('file.mat');
% Extract latitude and longitude columns
latitudes = data(:, 7);
longitudes = data(:, 8);
% Define the grid
lat_min = min(latitudes);
lat_max = max(latitudes);
lon_min = min(longitudes);
lon_max = max(longitudes);
% Define the resolution of the grid (e.g., 0.1 degree)
lat_res = 0.1;
lon_res = 0.1;
% Create the grid
lat_edges = lat_min:lat_res:lat_max;
lon_edges = lon_min:lon_res:lon_max;
% Count the number of strokes in each grid cell
counts = histcounts2(latitudes, longitudes, lat_edges, lon_edges);
% Calculate the area of each grid cell in square kilometers
% Approximation: 1 degree latitude ~ 111 km, 1 degree longitude ~ 111 km * cos(latitude)
lat_km = 111; % km per degree latitude
lon_km = @(lat) 111 * cosd(lat); % km per degree longitude
% Calculate the area of each grid cell
[lat_grid, lon_grid] = meshgrid(lat_edges(1:end-1) + lat_res/2, lon_edges(1:end-1) + lon_res/2);
cell_area_km2 = lat_km * lat_res * lon_km(lat_grid) * lon_res;
% Calculate density (strokes per square km per day)
% Assume you have data for a certain number of days, e.g., 30 days
num_days = 30;
density = counts ./ (cell_area_km2 * num_days);
% Plot the density map
figure;
imagesc(lon_edges, lat_edges, density);
set(gca, 'YDir', 'normal'); % Correct the Y-axis direction
colorbar;
xlabel('Longitude');
ylabel('Latitude');
title('Lightning Stroke Density (strokes/km^2/day)');
  • Adjust lat_res and lon_res according to the desired resolution and the size of your dataset.
  • Set num_days to reflect the actual number of days your data covers.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!