Re: [netcdfgroup] PDL::NetCDF cannot write to existing netcdf files

  • To: Brice Lambi <lambi@xxxxxxxx>
  • Subject: Re: [netcdfgroup] PDL::NetCDF cannot write to existing netcdf files
  • From: Doug Hunt <dhunt@xxxxxxxx>
  • Date: Wed, 15 Jul 2009 16:00:31 -0600 (MDT)
Hi Brice:

I think your script should work (it should add on the the existing netCDF file) if you just make a couple of changes:

use strict;    # make perl strict
use warnings;  # add useful warnings
use PDL;
use PDL::NetCDF;
use Fcntl;     # Define O_RDWR and other constants
               # Do not need PDL::Char

my $nc = PDL::NetCDF->new("testnc.nc", {MODE => O_RDWR, REVERSE_DIMS=>1});
my $data = pdl [1,2,3];
$nc->put('time_nominal', ['recNum'], $data);
$nc->close();

Regards,

  Doug Hunt

UCAR - COSMIC, Tel. (303) 497-2611

On Wed, 15 Jul 2009, Brice Lambi wrote:

Hello,

I'm trying to update some older code to use PDL::NetCDF but I'm having
problems writing to existing nc files.  For example, if we have a simple
cdl file:

netcdf testme  {

dimensions:
       recNum = UNLIMITED ;

variables:

       int time_nominal( recNum ) ;
               time_nominal:long_name = "time nominal";
               time_nominal:_FillValue = -99999;
               time_nominal:units = "seconds since 1970-01-01 00 UTC";

       :title = "test cdl";
       :version = 1.1;
}

and we run ncgen:

ncgen -o testnc.nc testme.cdl

Then we try to open the file with a perl script using PDL::NetCDF and
write to it:

use PDL;
use PDL::NetCDF;
use PDL::Char;

my $nc = PDL::NetCDF->new("testnc.nc", {MODE=>O_RDWR|REVERSE_DIMS=>1});
my $data = pdl [1,2,3];
$nc->put('time_nominal', ['recNum'], $data);
$nc->close();

This is the error I see:

Cannot write read-only netCDF file testnc.nc at ./testme.pl line 9

But if I first delete the file that I created with ncgen and run the
same code again it will run successfully and this is the output from ncdump:

netcdf testnc {
dimensions:
       recNum = 3 ;
variables:
       double time_nominal(recNum) ;
data:

time_nominal = 1, 2, 3 ;
}


But then if I run this code one more time (without deleting the file) I
will get the error again.

Is there something else I can do to tell PDL::NetCDF to write to the
existing file, even though my MODE is O_RDWR?  Or is this a known issue?

Thanks,
Brice Lambi

_______________________________________________
netcdfgroup mailing list
netcdfgroup@xxxxxxxxxxxxxxxx
For list information or to unsubscribe,  visit: 
http://www.unidata.ucar.edu/mailing_lists/




  • 2009 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: