[Scilab-users] Using Scinetcdf module

Lester Anderson arctica1963 at gmail.com
Fri Feb 5 14:48:54 CET 2016


Hi Simon,

Sorted it now:

source = fullfile('Q:\geophys\Gz.grd')
grav = ncread(source,'z') // read the gravity data from GMT grid
Hy = hilbert(grav); // do some math on the grid
filename = fullfile('Q:\geophys\Gz_Hy_testprog.grd')
nccreate(filename,'Hilb_Hy','Dimensions',list('r',601,'c',601)) //
define variable Hilb_Hy and grid dimensions
ncwrite(filename, 'Hilb_Hy',Hy) // write variable Hilb_Hy with data from Hy

One query is how to make it store the Longitude and Latitude values
rather than a cartesian?

>From GMT the grdinfo results for the original grid are:
grdinfo gz.grd
gz.grd: Title: Grid computed inside Mirone
gz.grd: Command:
gz.grd: Remark: File written from Matlab
gz.grd: Gridline node registration used [Geographic grid]
gz.grd: Grid file format: nf = GMT netCDF format (32-bit float), COARDS, CF-1.5
gz.grd: x_min: 5.00833333333 x_max: 15.0083333333 x_inc:
0.0166666666667 name: longitude [degrees_east] nx: 601
gz.grd: y_min: -5.99166666667 y_max: 4.00833333333 y_inc:
0.0166666666667 name: latitude [degrees_north] ny: 601
gz.grd: z_min: -48.2753601074 z_max: 143.910430908 name: z [unknown]
gz.grd: scale_factor: 1 add_offset: 0
gz.grd: format: classic

The computed grid results from Scilab give:
grdinfo Gz_Hy_testprog5.grd
Gz_Hy_testprog5.grd: Title:
Gz_Hy_testprog5.grd: Command:
Gz_Hy_testprog5.grd: Remark:
Gz_Hy_testprog5.grd: Gridline node registration used [Cartesian grid]
Gz_Hy_testprog5.grd: Grid file format: nd = GMT netCDF format (64-bit
float), COARDS, CF-1.5
Gz_Hy_testprog5.grd: x_min: 0 x_max: 600 x_inc: 1 name:  nx: 601
Gz_Hy_testprog5.grd: y_min: 0 y_max: 600 y_inc: 1 name:  ny: 601
Gz_Hy_testprog5.grd: z_min: NaN z_max: NaN name: Hilb_Hy
Gz_Hy_testprog5.grd: scale_factor: 1 add_offset: 0
Gz_Hy_testprog5.grd: format: netCDF-4 chunk_size: 0,0 shuffle: off
deflation_level: 0

Do you have to assign variables for the X, Y and Z.

Thanks



On 5 February 2016 at 13:03, Simon Marchetto
<simon.marchetto at scilab-enterprises.com> wrote:
> The error message means that the variable is already created, you cannot
> create it twice.
>
> Delete the file, and try again.
>
>
> An example of grid writing, taken from the ncwrite() help page:
>
> nccreate(filename, 'mat', 'Dimensions', list('r', 3, 'c', 4));
> ncwrite(filename, 'mat',  [1 2 3 4; 5 6 7 8; 9 10 11 12]);
>
> And to read it:
>
> ncread(filename, 'mat');
>
> Simon
>
>
> Le 05/02/2016 12:26, Lester Anderson a écrit :
>>
>> Hi Simon,
>>
>> Hy is a matrix and the input grid used has dimensions of 601 x 601
>> (x,y). Reading the data in is fine and the matrix is as expected in
>> the variable browser.
>>
>> grav = ncread(source,'z') is all fine with a 601 x 601 matrix
>>
>> Create variable Hilb_Hy:
>>
>> nccreate(filename,'Hilb_Hy','Dimensions',list('r',601,'c',601))
>>                                                                  !--error
>> 999
>> nccreate: nc_def_var() returned the error -42: NetCDF: String match to
>> name in use.
>>
>> Do you have an example grid to test the read and write function.
>>
>> Would it help to send you a copy of the grid file?
>>
>> Thanks
>>
>> On 5 February 2016 at 10:46, Harpreet Singh Rathore
>> <harpreet.mertia at gmail.com> wrote:
>>>
>>> Hey
>>>
>>> You have not created the variable in the file. First you have to create a
>>> variable in the following file using the command nccreate(filename,
>>> 'Hilb_Hy', 'Dimensions', list('r', no_row, 'c', no_column); after that
>>> you
>>> can pass the ncwrite command and you have to pass like this
>>> ncwrite(filename, 'Hilb_Hy',Hy) as Hy is a matrix.
>>>
>>> Regards
>>> Harpreet Singh
>>>
>>> On Fri, Feb 5, 2016 at 4:01 PM, Lester Anderson <arctica1963 at gmail.com>
>>> wrote:
>>>>
>>>> Hello Harpreet,
>>>>
>>>> I altered the code a bit but still get a problem
>>>>
>>>> Hy = hilbert(grav);
>>>> filename = fullfile('Q:\geophys\Gz_Hy.grd') // set output filename
>>>> // ncwrite(filename, varname, vardata, [start, [stride]])
>>>> ncwrite(filename, 'Hilb_Hy','Hy') // write variable Hilb_Hy with data
>>>> from
>>>> Hy
>>>>
>>>> Error message:
>>>>
>>>> ncwrite(filename, 'Hilb_Hy','Hy') // write variable Hilb_Hy with data
>>>> from
>>>> Hy
>>>>                                    !--error 999
>>>> ncwrite: nc_inq_varid() returned the error -49: NetCDF: Variable not
>>>> found.
>>>> at line       6 of exec file called by :
>>>> exec('Q:\geophys\Lester\SCILAB_work\netcdf1.sce', -1)
>>>>
>>>> In this case I want to define a variable name Hilb_Hy (although can
>>>> use any name really) in the netCDF file and write the output of the
>>>> Hilbert (Hy) transform.
>>>>
>>>> Cannot see the solution
>>>>
>>>>
>>>>
>>>> On 5 February 2016 at 10:15, Harpreet Singh Rathore
>>>> <harpreet.mertia at gmail.com> wrote:
>>>>>
>>>>> Dear Lester,
>>>>>
>>>>> As I can see the error is saying minimum 3 inputs are required. And
>>>>> after
>>>>> going through the help of the following function, you also have to pass
>>>>> the
>>>>> value which you have to store in the 'Hy'. You can go through the help
>>>>> files
>>>>> of ncwrite by typing help ncwrite in the console.
>>>>>
>>>>> Regards
>>>>> Harpreet
>>>>>
>>>>> On Fri, Feb 5, 2016 at 3:18 PM, Lester Anderson <arctica1963 at gmail.com>
>>>>> wrote:
>>>>>>
>>>>>> Hello all
>>>>>>
>>>>>> I am looking to use the sciNetCDF module to work with GMT grid files
>>>>>> but have some issues.
>>>>>>
>>>>>> Reading a GMT grid is not a problem as far as I can tell, so the
>>>>>> following does read the file (and z variable), storing the values in
>>>>>> the grav array:
>>>>>>
>>>>>> source = fullfile('Q:\geophys\Gz.grd')
>>>>>> grav = ncread(source,'z')
>>>>>> Hy = hilbert(grav); // write Hy variable to new file
>>>>>>
>>>>>> I am having problems with writing out the processed data e.g write a
>>>>>> new grid (Gz_Hy.grd) with the Hilbert transform solution
>>>>>>
>>>>>> filename = fullfile('Q:\geophys\Gz_Hy.grd')
>>>>>> ncwrite(filename, 'Hy') // does not work
>>>>>>
>>>>>> Error return:
>>>>>>
>>>>>> ncwrite(filename, 'Hy')
>>>>>>                         !--error 77
>>>>>> ncwrite: Wrong number of input argument(s): 3 to 5 expected.
>>>>>> at line       5 of exec file called by :
>>>>>> exec('Q:\geophys\Lester\SCILAB_work\netcdf1.sce', -1)
>>>>>>
>>>>>> Any advice would be appreciated.
>>>>>>
>>>>>> Thanks
>>>>>> Lester
>>>>>> _______________________________________________
>>>>>> users mailing list
>>>>>> users at lists.scilab.org
>>>>>> http://lists.scilab.org/mailman/listinfo/users
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Thanks and Regards
>>>>> Harpreet Singh
>>>>>
>>>>> _______________________________________________
>>>>> users mailing list
>>>>> users at lists.scilab.org
>>>>> http://lists.scilab.org/mailman/listinfo/users
>>>>>
>>>> _______________________________________________
>>>> users mailing list
>>>> users at lists.scilab.org
>>>> http://lists.scilab.org/mailman/listinfo/users
>>>
>>>
>>>
>>>
>>> --
>>> Thanks and Regards
>>> Harpreet Singh
>>>
>>> _______________________________________________
>>> users mailing list
>>> users at lists.scilab.org
>>> http://lists.scilab.org/mailman/listinfo/users
>>>
>> _______________________________________________
>> users mailing list
>> users at lists.scilab.org
>> http://lists.scilab.org/mailman/listinfo/users
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users



More information about the users mailing list