Map all time steps of a NetCDF file in R using a loop Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Using NetCDF for point time-series observations?Extract single datapoint from netCDF file in R using ndcfPlotting NetCDF file using lat and lon contained in variablesCreate a new NetCDF file combining information from two other NetCDF files in RExtract time series values from a 3D (lon,lat,time) NetCDF file using PythonConversion of netcdf file to csv file using R programmingPlotting NetCDF File using R?Merging netcdf files into one using R?Can't extract chlorophyll a values from NetCDF file using RMake a map using netCDF file
Fundamental Solution of the Pell Equation
Amount of permutations on an NxNxN Rubik's Cube
How to down pick a chord with skipped strings?
Is it ethical to give a final exam after the professor has quit before teaching the remaining chapters of the course?
Crossing US/Canada Border for less than 24 hours
How to Make a Beautiful Stacked 3D Plot
Do I really need recursive chmod to restrict access to a folder?
Is "Reachable Object" really an NP-complete problem?
Is there a holomorphic function on open unit disc with this property?
What do you call the main part of a joke?
Delete nth line from bottom
Does classifying an integer as a discrete log require it be part of a multiplicative group?
Is there any way for the UK Prime Minister to make a motion directly dependent on Government confidence?
If my PI received research grants from a company to be able to pay my postdoc salary, did I have a potential conflict interest too?
How to react to hostile behavior from a senior developer?
How to convince students of the implication truth values?
Can anything be seen from the center of the Boötes void? How dark would it be?
Using et al. for a last / senior author rather than for a first author
Find the length x such that the two distances in the triangle are the same
2001: A Space Odyssey's use of the song "Daisy Bell" (Bicycle Built for Two); life imitates art or vice-versa?
Most bit efficient text communication method?
Why do we bend a book to keep it straight?
Extracting terms with certain heads in a function
What is the meaning of the simile “quick as silk”?
Map all time steps of a NetCDF file in R using a loop
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Using NetCDF for point time-series observations?Extract single datapoint from netCDF file in R using ndcfPlotting NetCDF file using lat and lon contained in variablesCreate a new NetCDF file combining information from two other NetCDF files in RExtract time series values from a 3D (lon,lat,time) NetCDF file using PythonConversion of netcdf file to csv file using R programmingPlotting NetCDF File using R?Merging netcdf files into one using R?Can't extract chlorophyll a values from NetCDF file using RMake a map using netCDF file
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have a NetCDF containing temperature values over a certain region for 2011, with 1-hour intervals, so that means that I have 8760 maps. What I want to do, is plot all 8760 maps using one color palette, and also on every map plot the exact day and time on the map, because I want to show the evolution of temperature over a region, in a year. How can I do this using a for loop in R?
The ncdump -h of my .nc files gives the following result:
netcdf temperature {
dimensions:
rlon = 169 ;
rlat = 155 ;
height = 1 ;
time = UNLIMITED ; // (8760 currently)
variables:
double rlon(rlon) ;
rlon:standard_name = "grid_longitude" ;
rlon:long_name = "longitude in rotated pole grid" ;
rlon:units = "degrees" ;
rlon:axis = "X" ;
double rlat(rlat) ;
rlat:standard_name = "grid_latitude" ;
rlat:long_name = "latitude in rotated pole grid" ;
rlat:units = "degrees" ;
rlat:axis = "Y" ;
char rotated_pole ;
rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_pole:grid_north_pole_latitude = 39.25 ;
rotated_pole:grid_north_pole_longitude = -162. ;
double height(height) ;
height:standard_name = "height" ;
height:long_name = "height" ;
height:units = "m" ;
height:positive = "up" ;
height:axis = "Z" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "hours since 2011-01-01 00:00:00" ;
time:calendar = "proleptic_gregorian" ;
float var11(time, height, rlat, rlon) ;
var11:table = 2 ;
var11:grid_mapping = "rotated_pole" ;
r maps netcdf
add a comment |
I have a NetCDF containing temperature values over a certain region for 2011, with 1-hour intervals, so that means that I have 8760 maps. What I want to do, is plot all 8760 maps using one color palette, and also on every map plot the exact day and time on the map, because I want to show the evolution of temperature over a region, in a year. How can I do this using a for loop in R?
The ncdump -h of my .nc files gives the following result:
netcdf temperature {
dimensions:
rlon = 169 ;
rlat = 155 ;
height = 1 ;
time = UNLIMITED ; // (8760 currently)
variables:
double rlon(rlon) ;
rlon:standard_name = "grid_longitude" ;
rlon:long_name = "longitude in rotated pole grid" ;
rlon:units = "degrees" ;
rlon:axis = "X" ;
double rlat(rlat) ;
rlat:standard_name = "grid_latitude" ;
rlat:long_name = "latitude in rotated pole grid" ;
rlat:units = "degrees" ;
rlat:axis = "Y" ;
char rotated_pole ;
rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_pole:grid_north_pole_latitude = 39.25 ;
rotated_pole:grid_north_pole_longitude = -162. ;
double height(height) ;
height:standard_name = "height" ;
height:long_name = "height" ;
height:units = "m" ;
height:positive = "up" ;
height:axis = "Z" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "hours since 2011-01-01 00:00:00" ;
time:calendar = "proleptic_gregorian" ;
float var11(time, height, rlat, rlon) ;
var11:table = 2 ;
var11:grid_mapping = "rotated_pole" ;
r maps netcdf
3
Start with library(raster); r <- raster("ncfile.nc", band = 1); plot(r); Use "zlim = "argument to plot to keep the range constant, and pass in the colours you want to "col = "
– mdsumner
Jan 22 '17 at 2:53
How could this work in a loop, printing each time the exact day and time of the map?
– Maria Karypidou
Jan 22 '17 at 13:42
Try getZ(r) does that give the right time?
– mdsumner
Jan 22 '17 at 21:39
add a comment |
I have a NetCDF containing temperature values over a certain region for 2011, with 1-hour intervals, so that means that I have 8760 maps. What I want to do, is plot all 8760 maps using one color palette, and also on every map plot the exact day and time on the map, because I want to show the evolution of temperature over a region, in a year. How can I do this using a for loop in R?
The ncdump -h of my .nc files gives the following result:
netcdf temperature {
dimensions:
rlon = 169 ;
rlat = 155 ;
height = 1 ;
time = UNLIMITED ; // (8760 currently)
variables:
double rlon(rlon) ;
rlon:standard_name = "grid_longitude" ;
rlon:long_name = "longitude in rotated pole grid" ;
rlon:units = "degrees" ;
rlon:axis = "X" ;
double rlat(rlat) ;
rlat:standard_name = "grid_latitude" ;
rlat:long_name = "latitude in rotated pole grid" ;
rlat:units = "degrees" ;
rlat:axis = "Y" ;
char rotated_pole ;
rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_pole:grid_north_pole_latitude = 39.25 ;
rotated_pole:grid_north_pole_longitude = -162. ;
double height(height) ;
height:standard_name = "height" ;
height:long_name = "height" ;
height:units = "m" ;
height:positive = "up" ;
height:axis = "Z" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "hours since 2011-01-01 00:00:00" ;
time:calendar = "proleptic_gregorian" ;
float var11(time, height, rlat, rlon) ;
var11:table = 2 ;
var11:grid_mapping = "rotated_pole" ;
r maps netcdf
I have a NetCDF containing temperature values over a certain region for 2011, with 1-hour intervals, so that means that I have 8760 maps. What I want to do, is plot all 8760 maps using one color palette, and also on every map plot the exact day and time on the map, because I want to show the evolution of temperature over a region, in a year. How can I do this using a for loop in R?
The ncdump -h of my .nc files gives the following result:
netcdf temperature {
dimensions:
rlon = 169 ;
rlat = 155 ;
height = 1 ;
time = UNLIMITED ; // (8760 currently)
variables:
double rlon(rlon) ;
rlon:standard_name = "grid_longitude" ;
rlon:long_name = "longitude in rotated pole grid" ;
rlon:units = "degrees" ;
rlon:axis = "X" ;
double rlat(rlat) ;
rlat:standard_name = "grid_latitude" ;
rlat:long_name = "latitude in rotated pole grid" ;
rlat:units = "degrees" ;
rlat:axis = "Y" ;
char rotated_pole ;
rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_pole:grid_north_pole_latitude = 39.25 ;
rotated_pole:grid_north_pole_longitude = -162. ;
double height(height) ;
height:standard_name = "height" ;
height:long_name = "height" ;
height:units = "m" ;
height:positive = "up" ;
height:axis = "Z" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "hours since 2011-01-01 00:00:00" ;
time:calendar = "proleptic_gregorian" ;
float var11(time, height, rlat, rlon) ;
var11:table = 2 ;
var11:grid_mapping = "rotated_pole" ;
r maps netcdf
r maps netcdf
edited Jan 22 '17 at 17:21
Maria Karypidou
asked Jan 22 '17 at 2:39
Maria KarypidouMaria Karypidou
662725
662725
3
Start with library(raster); r <- raster("ncfile.nc", band = 1); plot(r); Use "zlim = "argument to plot to keep the range constant, and pass in the colours you want to "col = "
– mdsumner
Jan 22 '17 at 2:53
How could this work in a loop, printing each time the exact day and time of the map?
– Maria Karypidou
Jan 22 '17 at 13:42
Try getZ(r) does that give the right time?
– mdsumner
Jan 22 '17 at 21:39
add a comment |
3
Start with library(raster); r <- raster("ncfile.nc", band = 1); plot(r); Use "zlim = "argument to plot to keep the range constant, and pass in the colours you want to "col = "
– mdsumner
Jan 22 '17 at 2:53
How could this work in a loop, printing each time the exact day and time of the map?
– Maria Karypidou
Jan 22 '17 at 13:42
Try getZ(r) does that give the right time?
– mdsumner
Jan 22 '17 at 21:39
3
3
Start with library(raster); r <- raster("ncfile.nc", band = 1); plot(r); Use "zlim = "argument to plot to keep the range constant, and pass in the colours you want to "col = "
– mdsumner
Jan 22 '17 at 2:53
Start with library(raster); r <- raster("ncfile.nc", band = 1); plot(r); Use "zlim = "argument to plot to keep the range constant, and pass in the colours you want to "col = "
– mdsumner
Jan 22 '17 at 2:53
How could this work in a loop, printing each time the exact day and time of the map?
– Maria Karypidou
Jan 22 '17 at 13:42
How could this work in a loop, printing each time the exact day and time of the map?
– Maria Karypidou
Jan 22 '17 at 13:42
Try getZ(r) does that give the right time?
– mdsumner
Jan 22 '17 at 21:39
Try getZ(r) does that give the right time?
– mdsumner
Jan 22 '17 at 21:39
add a comment |
1 Answer
1
active
oldest
votes
This is given the assumption that there is only one variable in the netcdf, called temperature.
Check the name of your dimenions (assuming it's called "time");
names(your.nc$dim)
then use the length of your time dimension for the loop. It will loop through every time step, extract the raster and plot it. You'll need to determine what text you add etc, but the e.g. uses POSIXct notation:
require(ggplot2)
require(raster)
require(ncdf4)
# loop through length of timesteps (your case = 8760)
for(i in 1:length(your.nc$dim$time$vals))
# rasterize data for every time step (for variable, "temperature")
r <- raster("./path/your.nc",varname="temperature",band=i)
rxy <- as.data.frame(r,xy=T)
# plot in ggplot2
ggplot()+
geom_tile(data=rxy,aes(x=x,y=y,fill=rxy[,3]))+
labs(x="X",y="Y",title=as.POSIXct(i*3600,origin='2011-01-01 00:00'))
the as.POSXIct function takes a number, in seconds, and converts it to a datetime object from the origin nominated.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f225372%2fmap-all-time-steps-of-a-netcdf-file-in-r-using-a-loop%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This is given the assumption that there is only one variable in the netcdf, called temperature.
Check the name of your dimenions (assuming it's called "time");
names(your.nc$dim)
then use the length of your time dimension for the loop. It will loop through every time step, extract the raster and plot it. You'll need to determine what text you add etc, but the e.g. uses POSIXct notation:
require(ggplot2)
require(raster)
require(ncdf4)
# loop through length of timesteps (your case = 8760)
for(i in 1:length(your.nc$dim$time$vals))
# rasterize data for every time step (for variable, "temperature")
r <- raster("./path/your.nc",varname="temperature",band=i)
rxy <- as.data.frame(r,xy=T)
# plot in ggplot2
ggplot()+
geom_tile(data=rxy,aes(x=x,y=y,fill=rxy[,3]))+
labs(x="X",y="Y",title=as.POSIXct(i*3600,origin='2011-01-01 00:00'))
the as.POSXIct function takes a number, in seconds, and converts it to a datetime object from the origin nominated.
add a comment |
This is given the assumption that there is only one variable in the netcdf, called temperature.
Check the name of your dimenions (assuming it's called "time");
names(your.nc$dim)
then use the length of your time dimension for the loop. It will loop through every time step, extract the raster and plot it. You'll need to determine what text you add etc, but the e.g. uses POSIXct notation:
require(ggplot2)
require(raster)
require(ncdf4)
# loop through length of timesteps (your case = 8760)
for(i in 1:length(your.nc$dim$time$vals))
# rasterize data for every time step (for variable, "temperature")
r <- raster("./path/your.nc",varname="temperature",band=i)
rxy <- as.data.frame(r,xy=T)
# plot in ggplot2
ggplot()+
geom_tile(data=rxy,aes(x=x,y=y,fill=rxy[,3]))+
labs(x="X",y="Y",title=as.POSIXct(i*3600,origin='2011-01-01 00:00'))
the as.POSXIct function takes a number, in seconds, and converts it to a datetime object from the origin nominated.
add a comment |
This is given the assumption that there is only one variable in the netcdf, called temperature.
Check the name of your dimenions (assuming it's called "time");
names(your.nc$dim)
then use the length of your time dimension for the loop. It will loop through every time step, extract the raster and plot it. You'll need to determine what text you add etc, but the e.g. uses POSIXct notation:
require(ggplot2)
require(raster)
require(ncdf4)
# loop through length of timesteps (your case = 8760)
for(i in 1:length(your.nc$dim$time$vals))
# rasterize data for every time step (for variable, "temperature")
r <- raster("./path/your.nc",varname="temperature",band=i)
rxy <- as.data.frame(r,xy=T)
# plot in ggplot2
ggplot()+
geom_tile(data=rxy,aes(x=x,y=y,fill=rxy[,3]))+
labs(x="X",y="Y",title=as.POSIXct(i*3600,origin='2011-01-01 00:00'))
the as.POSXIct function takes a number, in seconds, and converts it to a datetime object from the origin nominated.
This is given the assumption that there is only one variable in the netcdf, called temperature.
Check the name of your dimenions (assuming it's called "time");
names(your.nc$dim)
then use the length of your time dimension for the loop. It will loop through every time step, extract the raster and plot it. You'll need to determine what text you add etc, but the e.g. uses POSIXct notation:
require(ggplot2)
require(raster)
require(ncdf4)
# loop through length of timesteps (your case = 8760)
for(i in 1:length(your.nc$dim$time$vals))
# rasterize data for every time step (for variable, "temperature")
r <- raster("./path/your.nc",varname="temperature",band=i)
rxy <- as.data.frame(r,xy=T)
# plot in ggplot2
ggplot()+
geom_tile(data=rxy,aes(x=x,y=y,fill=rxy[,3]))+
labs(x="X",y="Y",title=as.POSIXct(i*3600,origin='2011-01-01 00:00'))
the as.POSXIct function takes a number, in seconds, and converts it to a datetime object from the origin nominated.
answered May 29 '18 at 9:10
SamSam
7871826
7871826
add a comment |
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f225372%2fmap-all-time-steps-of-a-netcdf-file-in-r-using-a-loop%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
Start with library(raster); r <- raster("ncfile.nc", band = 1); plot(r); Use "zlim = "argument to plot to keep the range constant, and pass in the colours you want to "col = "
– mdsumner
Jan 22 '17 at 2:53
How could this work in a loop, printing each time the exact day and time of the map?
– Maria Karypidou
Jan 22 '17 at 13:42
Try getZ(r) does that give the right time?
– mdsumner
Jan 22 '17 at 21:39