Regridding using lat/lon data
12 views (last 30 days)
Show older comments
I am working with runoff data on a high resolution regional grid. The grid is 560x560 in size and I need to regrid the data to be on a lower resolution grid of size 384x320. The high res data has latitude/longitude coordinates and one dimensional values for each grid cell. The low res grid has lat/lon locations. I need to map each grid cell from the high res grid onto a grid cell in the low res grid so that none of the runoff data is lost and the runoff total over the whole space will be preserved. I have been unable to find a nearest neighbor search function that can use lat/lon to map data across grids. Does anyone have any suggestions? Thank you!
1 Comment
Answers (3)
Walter Roberson
on 10 Nov 2016
Let first_lat be the latitude for runoff_data(1,:), last_lat be the latitude for runoff_data(end,:), first_long be the longitude for runoff_data(:,1), last_long be the longitude for runoff_data(:,end)
row_vector_of_old_latitudes = linspace(first_lat, last_lat, size(runoff_data,1));
column_vector_of_old_longitudes = linspace(first_long, last_long, size(runoff_data,2)).';
row_vector_of_new_latitudes = linspace(first_lat, last_lat, 384);
column_vector_of_new_longitudes = linspace(first_long, last_long, 320).';
new_runoff_data = interp2(row_vector_of_old_latitudes, column_vector_of_old_longitudes, runoff_data, row_vector_of_new_latitudes, column_vector_of_new_longitudes, 'linear');
1 Comment
Walter Roberson
on 10 Nov 2016
Afterwards,
nrd = new_runoff_data * size(runoff_data,1)/size(new_runoff_data,1) * size(runoff_data,2)/size(new_runoff_data,2)
This will not be an exact preservation of the total. For example with my random sample data the total of nrd was 1725168.80255951 compared to an actual total of 1724560
Getting an exact preservation without simple scaling by the ratio is tricky.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!