- First dimension is longitude
- Second dimension is latitute
- Third dimension is time
creating time series on specific coordinates rainfall using .nc
4 次查看(过去 30 天)
显示 更早的评论
I downloaded the global-scale rainfall data from 2017 to 2021 from the climate.copernicus portal (climate.copernicus). The system downloaded an .nc file for each year.
I would first of all like to be able to merge these files if possible, or at a later date be able to plot the time series of rainfall from 2017 to 2021 on a single graph. Another important step is that I would like to be able to have the time series of a specific point with the following coordinates 58.491573, 25.778418; or alternatively use a rectangle where I can have the time series considering the centroid of the polygon. how can I do?
But at the end, I wasn't able to create one plot with data on x-axis and rainfall data on y-axis considenring specific coordinates.
For now I have this script that allows me to open the file and understand the internal variables.
ncfile = ('GPCC_total_precipitation_mon_0.5x0.5_global_2017_v2020.0.nc');
% To get information about the nc file
ncinfo(ncfile)
% to display nc file
ncdisp(ncfile)
Here there is output
Format:
netcdf4
Dimensions:
time = 12 (UNLIMITED)
lon = 720
lat = 360
Variables:
time
Size: 12x1
Dimensions: time
Datatype: double
Attributes:
standard_name = 'time'
units = 'hours since 1891-1-1 00:00:00'
calendar = 'proleptic_gregorian'
axis = 'T'
lon
Size: 720x1
Dimensions: lon
Datatype: double
Attributes:
standard_name = 'longitude'
long_name = 'longitude'
units = 'degrees_east'
axis = 'X'
lat
Size: 360x1
Dimensions: lat
Datatype: double
Attributes:
standard_name = 'latitude'
long_name = 'latitude'
units = 'degrees_north'
axis = 'Y'
pr
Size: 720x360x12
Dimensions: lon,lat,time
Datatype: single
Attributes:
standard_name = 'lwe_precipitation_rate'
long_name = 'total monthly precipitation'
units = 'mm/month'
code = 20
_FillValue = 3.000000060858434e+33
missing_value = 3.000000060858434e+33
institution = 'DWD'
Then I split the data considering the Variables using this code
% to read a vriable 'var' exisiting in nc file
long = ncread(ncfile,'lon');
latt = ncread(ncfile,'lat');
time = ncread(ncfile,'time');
pr = ncread(ncfile, 'pr'); %rainfall data
0 个评论
回答(1 个)
Cris LaPierre
2023-10-3
Look at the size info to figure out the dimensions of pr
So if I wanted to extract all the pr values for a specific longitude and latitude, I would first figure out which row corresponds to the longitude of interest, and which column corresponds to the latitude of interest. Assuming the lon/lat coordinate exactly matches the data sample grid, that might look like this:
lon = 8.491573;
lat = 25.778418;
indx = long==lon;
indy = latt==lat;
prData = pr(indx,indy,:);
plot(time,prData)
Since you have multiple files, the first step might be to use fileDatastore to load all the data first, and then work on the data. You can write a custom function that can load the data from a single file, and use that as the ReadFcn for you fileDatastore.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 NetCDF 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!