Dear Dave Great, that worked! Many thanks. Now I want to put more weekly data (as RN01 was data for the first week of the year 2006) into the var_radon, but this is not possible for dim_station, as there are only 3 dimensions. Do I have to redefine 51 other dimensions? I tried to use list() to define the other dimensions, but that didn't work.
Many thanks Thomas -----Ursprüngliche Nachricht----- Von: David Pierce [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 9. August 2007 18:25 An: Thomas Szegvary Cc: 'Michael Sumner'; r-sig-geo@stat.math.ethz.ch Betreff: Re: AW: [R-sig-Geo] Coordinate/grid for ncdf data Hello, the reason you are getting that error from the ncdf package is because you have defined variable "Radon" to be a *two* dimensional array in the netcdf file. The number of entries in dimension 1 is length(long) = 10573, and the number of entries in dimension 2 is length(lat) = 10573. So, the total number of entries in the array in the netcdf file is length(long) * length(lat) = 10573 * 10573 = 111788329. You only want to define a 2-d array when the location of data[i,j] can be described as (lon[i],lat[j]). That is not the case for your data, because it is not on any sort of grid. Instead, you will want to create a set of 3 1-dimensional arrays along the following lines: n_stations <- length(RN01) dim_station <- dim.def.ncdf( 'Radon_station', '-', 1:n_stations ) var_lon <- var.def.ncdf( 'Longitude', 'degreesE', dim_station, 1.e30 ) var_lat <- var.def.ncdf( 'Latitude', 'degreesN', dim_station, 1.e30 ) var_radon <- var.def.ncdf( 'Radon', 'Bq/m2/h1', dim_stattion, 1.e30 ) ncid_out <- create.ncdf( 'rn.weekly.nc', list(var_lon,var_lat,var_radon)) put.var.ncdf( ncid_out, var_lon, long ) put.var.ncdf( ncid_out, var_lat, lat ) put.var.ncdf( ncid_out, var_radon, RN01 ) close.ncdf( ncid_out ) Now, the location of data point RN01[i] is correctly described as (lon[i],lat[i]); compare this to what you were trying before, which was RN01[i,j] having the location (lon[i],lat[j]). Regards, --Dave Thomas Szegvary wrote: > I use ncdf V1.6 on Windows XP Sp2, I hava attached the sample file > (tab > delim) which contains 2 columns for coordinates long/lat and 10 > columns for weekly averages of radon. Sp would be the best solution to > produce map I guess, but for time series analysis I think netcdf would > perform better. > > Thanks,thoams > > > > -----Ursprüngliche Nachricht----- > Von: Michael Sumner [mailto:[EMAIL PROTECTED] > Gesendet: Donnerstag, 9. August 2007 01:49 > An: 'Thomas Szegvary'; r-sig-geo@stat.math.ethz.ch > Betreff: RE: [R-sig-Geo] Coordinate/grid for ncdf data > > Hi, can you provide an example file? > > I'd recommend avoiding NetCDF for various reasons, why don't you > simply add each value column from the separate files to a new column > in a SpatialGridDataFrame? > > That would be the recommend sp way to proceed here. If you really need > to create a NetCDF file, please let us know more about your OS and the > package/s and versions you are using (ncdf I presume?) - however such > questions should include the ncdf(?) package author at least. > > Cheers, Mike. > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Thomas > Szegvary > Sent: Wednesday, 8 August 2007 11:13 PM > To: r-sig-geo@stat.math.ethz.ch > Subject: [R-sig-Geo] Coordinate/grid for ncdf data > > Hi! > > I have a table with 3 columns, 2 for long/lat coordinates and 1 for > values (radon concentration). I have data for every week of the year > 2006,distributed in 52 tables/files. I want to create a NetCDF file, > which is much easier to handle than extracting the values from 52 > tables. I tried the following for the first dataset (i.e first week): > > #extracting coordinates and values from my tables (which have also > other information I don't need) > W01<-read.table("RN_weekly/KW01_RN.dat") > long<-W01$V1 > lat<-W01$V2 > RN01<-W01$V3 > > #defining dimensions for coordinates > dim1 <- dim.def.ncdf( "EW","degrees", as.double(long)) > dim2 <- dim.def.ncdf( "SN","degrees", as.double(lat)) > > #defining variable for my values I want to have the time series varz > <- var.def.ncdf("Radon","Bq/m2/h1", list(dim1,dim2), -1, > longname="Radon flux rate") > > #creating the netcdf file and filling the variable varz with the first > data-week from my time series nc.rn <- > create.ncdf("rn_weekly.nc",varz) > put.var.ncdf(nc.rn,varz,RN01) > close.ncdf(nc.rn) > > > The problem now is that the last step (put.var.ncdf) doesn't work, > because it says I am trying to "error: you asked to write 111788329 > values, but the passed data array only has 10573* entries!". So I > think the problem is that I need an array with two dimensions > (coordinates...) for my values. But how do I get this from my tables?? > > *10573 are the pixels for my area > > Thanks for any help! > Thomas > > > __ > > Thomas Szegvary > Institute of Environmental Geosciences Department of Geosciences > University of Basel Bernoullistrasse 30 CH - 4056 Basel > > Tel. 41-61-267 04 82 > Fax. 41-61-267 04 79 > Email: [EMAIL PROTECTED] > www.radon.unibas.ch > www.unibas.ch/environment > > _______________________________________________ > R-sig-Geo mailing list > R-sig-Geo@stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/r-sig-geo > --------------------------------------------------------------- David W. Pierce / Climate Research Division Scripps Inst. Oceanog. / (858) 534-8276 (voice) [EMAIL PROTECTED] / (858) 534-8561 (fax) _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo